Packages

Encode and decode HTTP Link headers.

Current section

Files

Jump to
linkex lib linkex.ex
Raw

lib/linkex.ex

defmodule Linkex do
@moduledoc """
Encode and decode HTTP Link headers.
"""
alias Linkex.{Decoder, Encoder, LinkHeader}
@doc """
Encode a `Linkex.LinkHeader` struct to a Link HTTP header.
"""
@spec encode(LinkHeader.t()) :: {:ok, String.t()}
def encode(header), do: Encoder.encode(header)
def encode!(header) do
header
|> encode()
|> handle_result()
end
@doc """
Decode a Link HTTP header to a `Linkex.LinkHeader` struct.
"""
@spec decode(String.t()) :: {:ok, LinkHeader.t()}
def decode(header), do: Decoder.decode(header)
def decode!(header) do
header
|> decode()
|> handle_result()
end
defp handle_result({:ok, result}), do: result
defp handle_result({:error, error}), do: raise(error)
end