🔩 Utility to parse, sort and generate the "Link" HTTP Header
Add this line to your application's Gemfile:
gem 'http_headers-link'
And then execute:
$ bundle
Or install it yourself as:
$ gem install http_headers-link
You can parse the "Link" header. As per the RFCs, you should really have one (delimited) value but the current implementation links an array of values.
require 'http_headers/link'
value = '
<https://domain.tld/deploy/path/api/books/aad2a2f-84e9-4b33-a718-8095262def9a/reviews>; rel=reviews,
<https://domain.tld/deploy/path/api/books/aad2a2f-84e9-4b33-a718-8095262def9a>; rel=self,
<https://domain.tld/deploy/path/api/authors/78eb296b-6942-40ea-be0d-d702c0564b31>; rel=author
'.trim
parsed = HttpHeaders::Link.new(value)
parsed[:self].to_s
# => '<https://domain.tld/deploy/path/api/books/aad2a2f-84e9-4b33-a718-8095262def9a>; rel=self'
parsed.last.rel
# => author
parsed = HttpHeaders::Link.new([
'<https://domain.tld/deploy/path/api/books/aad2a2f-84e9-4b33-a718-8095262def9a>; rel=book, foo=bar',
'<https://domain.tld/deploy/path/api/books/aad2a2f-84e9-4b33-a718-8095262def9a/signatures/219472931>; rel=self'
])
parsed.first[:foo]
# => bar
parsed.last.href
# => 'https://domain.tld/deploy/path/api/books/aad2a2f-84e9-4b33-a718-8095262def9a/signatures/219472931'
Each parsed entry exposes the following methods:
href
: the parsed href to the linkrel
: the quality parameter as float, or 1.0templated?
: true if there is a parametertemplated
that istrue
[](parameter)
: accessor for the parameter; throws if it does not existto_s
: encode back to an entry to be used in aLink
header
The resulting collection works both as an Array
and Hash
by rel
.
- HttpHeaders::Utils: 🔩 Utility belt for the HttpHeader libraries
- HttpHeaders::Accept: 🔩 Utility to parse and sort the "Accept" HTTP Header
- HttpHeaders::AcceptLanguage: 🔩 Utility to parse and sort the "Accept-Language" HTTP Header
- HttpHeaders::ContentType: 🔩 Utility to parse and sort the "Content-Type" HTTP Header
After checking out the repo, run bin/setup
to install dependencies. Then, run rake test
to run the tests. You can
also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the
version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version,
push git commits and tags, and push the .gem
file to rubygems.org.
Bug reports and pull requests are welcome on GitHub at XPBytes/http_headers-link.