No release in over a year
A parser/processor for Link Headers and Linksets in both JSON and Text formats.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 3.11

Runtime

 Project Readme

LinkHeaders::Processor

A gem to extract Link Headers from Web responses.

This module handles HTTP Link Headers, HTML Link Headers, and auto-follows links to LinkSets in both JSON and Text format, and processes them also. It also handles some unusual cases, such as having multiple relation types in a single link, or when dealing with 204 or 410 response where there is no message body.

Installation

Install the gem and add to the application's Gemfile by executing:

$ bundle add linkheaders-processor

If bundler is not being used to manage dependencies, install the gem by executing:

$ gem install linkheaders-processor

Usage


    require 'linkheaders/processor'
    require 'rest-client'

    # url1 has http link headers, and a reference to a linkset in json format
    url1 = "https://s11.no/2022/a2a-fair-metrics/07-http-describedby-citeas-linkset-json/"

    # url2 has http link headers, with a reference to a linkset in legacy text format
    url2 = "https://s11.no/2022/a2a-fair-metrics/28-http-linkset-txt-only/"

    p = LinkHeaders::Processor.new(default_anchor: url1)
    r = RestClient.get(url1)

    p.extract_and_parse(response: r)
    factory = p.factory  # LinkHeaders::LinkFactory

    factory.all_links.each do |l| 
        puts l.href
        puts l.relation
        puts l.responsepart

        # Additional properties are added as other instance methods
        # you can access them as follows:

        puts l.linkmethods  # returns list of instance methods beyond href and relation, that are attributes of the link
        l.linkmethods.each do |method|
            puts "#{method}=" + l.send(method)
        end
        # or
        puts l.type if l.respond_to? 'type'
        puts

    end



    p = LinkHeaders::Processor.new(default_anchor: url2)
    r = RestClient.get(url2)

    p.extract_and_parse(response: r)
    factory = p.factory

    factory.all_links.each do |l| 
        puts l.href
        puts l.relation
        puts l.responsepart
        puts
        puts
    end

Development

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/markwilkinson/linkheader-parser.

License

The gem is available as open source under the terms of the MIT License.