defmodule Web3.HTTP.HTTPoison do
@moduledoc """
Uses `HTTPoison` for `Web3.HTTP`
"""
alias Web3.HTTP
@behaviour HTTP
@impl HTTP
def json_rpc(url, json, options) when is_binary(url) and is_list(options) do
case HTTPoison.post(url, json, [{"Content-Type", "application/json"}], options) do
{:ok, %HTTPoison.Response{body: body, status_code: status_code}} ->
{:ok, %{body: body, status_code: status_code}}
{:error, %HTTPoison.Error{reason: reason}} ->
{:error, reason}
end
end
def json_rpc(url, _json, _options) when is_nil(url), do: {:error, "URL is nil"}
end