parse_link_header
A library for parsing HTTP Link header.
How to use
Note for version 0.1.x
The version 0.1 can't correctly handle the relative ref which described in
https://tools.ietf.org/html/rfc3986#section-4.1
The parsed value of version 0.1 refers to the return value of
https://github.com/thlorenz/parse-link-header, which is a HashMap with the
same structure.
So if you want to parse relative ref, please use version >=0.2.
Or if you don't care about relative ref and want a simple HashMap<String, HashMap<String, String>> result, you can use version 0.1.
Example
In your Cargo.toml, add:
[]
= "0.4"
Then:
let link_header = r#"<https://api.github.com/repositories/41986369/contributors?page=2>; rel="next", <https://api.github.com/repositories/41986369/contributors?page=14>; rel="last""#;
let res = parse;
assert!;
let val = res.unwrap;
assert_eq!;
assert_eq!;
assert_eq!;
The parsed value is a Result<HashMap<Option<Rel>, Link>, Error> (aka a
LinkMap), which Rel and Link is:
use HashMap;
use Uri;
use Url as Uri;
type Rel = String;
Note that according to https://tools.ietf.org/html/rfc8288#section-3.3 (October 2017),
the rel parameter must be present. That's why the key of HashMap<Option<Rel>, Link> is Option<Rel>.
So if you find that the key is None, check if you specified the rel type.
parse_with_rel
Version >= 0.3.0
Alternatively, use the parse_with_rel() function to get a HashMap<String, Link> (aka a RelLinkMap), as in:
let link_header = r#"<https://api.github.com/repositories/41986369/contributors?page=2>; rel="next", <https://api.github.com/repositories/41986369/contributors?page=14>; rel="last""#;
let res = parse_with_rel;
assert!;
let val = res.unwrap;
assert_eq!;
assert_eq!;
assert_eq!;
You can use this function if you ensure that the rel parameter is present in the header.
Feature: url
Version >= 0.3.0
If the url feature is enabled, the uri field in struct parse_link_header::Link will be
of type url::Url from the url crate, rather than the http::uri::Uri it normally is.
This allows integration with other libraries that use the url crate, such as reqwest.
NOTE: This implicitly disabled support for relative refs, as URLs do not support relative refs (whereas URIs do).
How to contribute
Pull a request or open an issue to describe your changes or problems.
License
MIT @ g1eny0ung