Current section

Files

Jump to
hafnium lib hafnium.ex
Raw

lib/hafnium.ex

defmodule Hafnium do
@external_resource readme = Path.join([__DIR__, "../README.md"])
@moduledoc readme
|> File.read!()
|> String.split("<!-- MDOC -->")
|> Enum.fetch!(1)
@moduledoc since: "0.1.0"
@type state :: :ignored | :error | :ok
@type result :: {state(), any()}
@type pipe_tuple ::
:ignored
| :ok
| {:error, reason :: any()}
| {:ok, result :: any()}
| {:resp_body, body :: any()}
@type pipe_result :: t() | pipe_tuple()
@type pipeline :: {module(), keyword()}
@type trace :: %{
duration: non_neg_integer(),
id: non_neg_integer(),
index: non_neg_integer(),
middleware: module(),
result: result()
}
@version Mix.Project.config()[:version]
@doc false
def version, do: @version
defstruct context: [],
result: {:ok, nil},
req: %HTTPoison.Request{url: nil},
resp: nil,
requests: [],
responses: [],
traces: [],
input: %{},
option: nil,
__module__: nil
@typedoc "Base struct"
@type t :: %__MODULE__{
context: keyword(),
result: result(),
req: HTTPoison.Request.t(),
resp: HTTPoison.Response.t() | nil,
requests: [pipeline()],
responses: [pipeline()],
traces: [trace()],
input: map(),
option: any(),
__module__: module()
}
end