defmodule ExCoinbase.Utils do @moduledoc """ Utils with responses processing """ @spec response_processing({:ok, Poison.Parser.t()} | {:error, HTTPoison.Error.t()}) :: {:ok, {integer(), Poison.Parser.t()}} | {:error, Exception.t()} | {:error, HTTPoison.Error.t()} def response_processing(response) do case response do {:ok, %{body: body, status_code: status}} -> case Poison.decode(body) do {:ok, decoded} -> {:ok, {status, decoded}} {:error, error} -> {:error, error} end {:error, err} -> {:error, err} end end @spec build_body(struct() | map()) :: {:ok, String.t()} | {:error, Exception.t()} def build_body(fields) do Poison.encode(fields) end end