Scratcher
Scratcher is a library for calling various HTTP Clients equivalently.
It respects the design of the ex_aws HTTP client module. ExAws.Request.HttpClient
You can call various HTTP Clients within your module by following the steps below.
- Use a module that already implements
Scratcher.HttpClient
as Behavior, or implement a module that uses the HTTP Client that you want to use. - Specify the module in Config.
- The module that wants to send HTTP request can use the HTTP Client module obtained from Config.
defmodule Your.HttpClient do
@behaviour Scratcher.HttpClient
def request(method, url, body, headers, http_opts) do
# use hackney, httpoison, httpotion...
{:ok, %{status_code: 200, body: "..."}}
end
end
config :your_module, http_client: Your.HttpClient
defmodule YourModule do
@http_client Application.fetch_env!(:your_module) |> Keyword.fetch!(:http_client)
def request(method, url, body, headers, http_opts) do
@http_client.request(method, url, body, headers, http_opts)
end
end
Installation
If available in Hex, the package can be installed
by adding scratcher
to your list of dependencies in mix.exs
:
def deps do
[
{:scratcher, "~> 0.1"}
]
end
Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/scratcher.