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