defmodule BinanceHttp.Http.Response do
def prepare_response(body, headers) do
headers
|> get_content_type()
|> prepare_body(body)
end
defp get_content_type(headers) do
result =
Enum.find(headers, fn({k, _v}) ->
k == "Content-Type"
end)
case result do
{"Content-Type", value} ->
value
nil->
:skip
end
end
defp prepare_body(:skip, body), do: body
defp prepare_body(type, body) do
cond do
String.contains?(type, "application/json") ->
prepare_json(body)
true ->
body
end
end
defp prepare_json(content) do
case Jason.decode(content) do
{:ok, result} ->
result
{:error, _reason} ->
content
end
end
end