Current section

Files

Jump to
coinbase_pro_elixir lib http poison.ex
Raw

lib/http/poison.ex

defmodule CoinbasePro.Http.Poison do
@moduledoc """
Implementation of HttpProtocol for HTTPoison
"""
require Logger
alias CoinbasePro.HttpProtocol
@behaviour HttpProtocol
def get(url, headers \\ []) do
HTTPoison.start()
case HTTPoison.get(url, headers) do
{:ok, response} ->
decode(response)
{:error, reason} ->
error_string = "Http request failed: #{inspect(reason)}"
Logger.error(error_string)
{:error, error_string}
end
end
def post(url, body, headers \\ []) do
HTTPoison.start()
case HTTPoison.post(url, body, headers) do
{:ok, response} ->
decode(response)
{:error, reason} ->
error_string = "Http request failed: #{inspect(reason)}"
Logger.error(error_string)
{:error, error_string}
end
end
defp decode(%HTTPoison.Response{body: body}) do
case Jason.decode(body) do
{:ok, decoded} ->
decoded
{:error, reason} ->
error_string = "could not decode body: #{inspect(reason)}"
{:error, error_string}
end
end
end