defmodule Vault.HTTP.Adapter do
@moduledoc """
Adapter interface for making Vault HTTP.
`Vault` comes with a basic Tesla Adapter, providing support for `hackney`,
`httpc`, and `ibrowse`
"""
@type method :: :get | :put | :post | :patch | :delete | :head
@type url :: String.t()
@type params :: map()
@type headers :: list({String.t(), String.t()})
@type http_options :: Keyword.t()
@type response :: %{
headers: list,
status: integer,
body: String.t()
}
@callback request(method, url, params, headers, http_options) ::
{:ok, response} | {:error, term}
end