Timber v2.0.0-rc5 Timber.HTTPClient behaviour

Behavior for custom HTTP clients. If you opt not to use the default Timber HTTP client (Timber.HTTPClients.Hackney) you can define your own by adhering to this behavior.

Example

defmodule MyHTTPClient do
  alias Timber.HTTPClient

  @behaviour HTTPClient

  @spec request(HTTPClient.method, HTTPClient.url, HTTPClient.headers, HTTPClient.body, HTTPClient.options) ::
    {:ok, HTTPClient.status, HTTPClient.Headers, HTTPClient.body} | {:error, any()}
  def request(method, url, headers, body, opts) do
    # make request here
  end
end

Then specify it in your configuration:

config :timber, :http_client, MyHTTPClient

Summary

Types

async_result()
async_result() :: {:ok, reference} | {:error, atom}
body()
body() :: IO.chardata
headers()
headers() :: map
method()
method() :: atom
result()
result() :: {:ok, integer, map, String.t} | {:error, atom}
status()
status() :: pos_integer
url()
url() :: String.t

Callbacks

async_request(method, url, headers, body)
async_request(method, url, headers, body) :: async_result
request(method, url, headers, body)
request(method, url, headers, body) :: result
start()
start() :: :ok
wait_on_request(reference)
wait_on_request(reference) :: :ok