ExLinkHeader
Parse HTTP link headers in Elixir.
Usage
ExLinkHeader.parse!("<https://api.github.com/user/simonrand/repos?per_page=100&page=2>; rel=\"next\", <https://api.github.com/user/simonrand/repos?page=3&per_page=100>; rel=\"last\", <https://api.github.com/user/simonrand/repos?page=1&per_page=100>; rel=\"first\"")
#=> %{"first" => %{page: "1", per_page: "100", rel: "first", url: "https://api.github.com/user/simonrand/repos?page=1&per_page=100"}, "last" => %{page: "3", per_page: "100", rel: "last", url: "https://api.github.com/user/simonrand/repos?page=3&per_page=100"}, "next" => %{page: "2", per_page: "100", rel: "next", url: "https://api.github.com/user/simonrand/repos?per_page=100&page=2"} }
ExLinkHeader.parse!("")
#=> ** (ExLinkHeader.ParseError) Parse error: no valid links to parse
Note a change in v0.0.4
Links with no page or per_page param previously returned nil by default for both these params, even if they did not exist - this is now no longer the case, page and per_page are now treated like any other query params. To return nil for these values you can supply defaults for any param when calling parse to ensure default values are returned, for example:
ExLinkHeader.parse!("<https://api.github.com/user/simonrand/repos?per_page=100>; rel=\"next\", ", %{page: nil})
#=> %{"next" => %{
url: "https://api.github.com/user/simonrand/repos?per_page=100",
page: nil,
per_page: "100",
rel: "next"
}
}
Code Status
Installation
The package can be installed as:
-
Add ex_link_header to your list of dependencies in
mix.exs:def deps do [{:ex_link_header, "~> 0.0.4"}] end
-
Ensure ex_link_header is started before your application:
def application do [applications: [:ex_link_header]] end
License
Released under the Apache 2 License.
See LICENSE for more information.