Current section

Files

Jump to
exkeycdn lib encoder.ex
Raw

lib/encoder.ex

defmodule ExKeyCDN.FormEncoder do
@moduledoc """
Encodes map to application/x-www-form-urlencoded
"""
@spec encode(map) :: binary | {:error, binary}
def encode(body) when is_map(body) do
body
|> Enum.map(fn {key, value} ->
case is_atom(key) do
true -> "#{:hackney_url.urlencode(Atom.to_string(key))}=#{:hackney_url.urlencode(value)}"
false -> "#{:hackney_url.urlencode(key)}=#{:hackney_url.urlencode(value)}"
end
end)
|> Enum.join("&")
end
def encode(_body), do: {:error, "Request body must be a map."}
end