NAME

HTTP::Link - RFC5988 Web Linking

VERSION

version 0.001

METHODS

new

Return a new Web Link as string

    my $link = HTTP::Link->new('/TheBook/Chapter/2',
        relation => 'next',
        title => 'next chapter',
    );
    # Result:
    # </TheBook/Chapter/2>; rel="next"; title="next chapter"

Arguments:

  • $iri An internationalized resource identifier. This is a target uri reference.

  • %options Additional parameters (see below)

Parameters for %options:

  • relation

    Possible relation types are: alternate, appendix, bookmark, chapter, contents, copyright, current, describedby, edit, edit-media, enclosure, first, glossary, help, hub, index, last, latest-version, license, next, next-archive, payment, prev, predecessor-version, previous, prev-archive, related, replies, section, self, service, start, stylesheet, subsection, successor-version, up, version-history, via, working-copy, working-copy-of and others (see IANA registry)

  • extension

    An extension for a relation type.

  • anchor

    An anchor for the context IRI.

  • hreflang

    A hint indicating what the language of the destination's content is

  • media

    Intended destination medium, like in a CSS media query.

  • title

    A human-readable label. This will be encoded with MIME::EcoEncode.

  • type

    A hint indication the most possible MIME type of the destination's content.

rel

Shortcut method for "new" with a different signature:

    HTTP::Link->rel('/TheBook/Chapter/2',
        start => '/TheBook/Chapter/0'
    );
    # same as
    HTTP::Link->new('/TheBook/Chapter/2',
        relation => 'start',
        extension => '/TheBook/Chapter/0',
    );

Arguments:

  • $iri

    See "new"

  • $relation

    Will appended to %options by relation = $relation >>

  • $extension

    Will appended to %options by extension = $extension >>

  • %options

    See "new"

multi

When more than one link should be provides, this method is useful. It accepts a hash or a HashRef with a mapping of IRIs to options.

    HTTP::Link->multi(
        '/TheBook/Chapter/2' => {
            relation => 'previous'
        },
        '/TheBook/Chapter/4' => {
            relation => 'next'
        },
    );
    # Result:
    # </TheBook/Chapter/2>; rel="previous", </TheBook/Chapter/4>; rel="next"

parse

Parses a Link-header field a returns all founded links as a list of HashRefs.

    my @links = HTTP::Link->parse(<<EOT);
    </TheBook/Chapter/2>; rel="previous", </TheBook/Chapter/4>; rel="next"
    EOT
    # Result:
    @links = ({
        iri => '/TheBook/Chapter/2',
        relation => 'previous'
    },{
        iri => '/TheBook/Chapter/4',
        relation => 'next'
    });

parse_hash

Parses a Link-header field a returns all founded links as a HashRef with IRIs as key:

    my %links = HTTP::Link->parse_hash(<<EOT);
    </TheBook/Chapter/2>; rel="previous", </TheBook/Chapter/4>; rel="next"
    EOT
    # Result:
    %links = (
        '/TheBook/Chapter/2' => {
            relation => 'previous'
        },
        '/TheBook/Chapter/4' => {
            relation => 'next'
        }
    );

FUNCTIONS

Wrapper for HTTP::Link->"new"

Wrapper for HTTP::Link->"rel"

Wrapper for HTTP::Link->"multi"

Wrapper for HTTP::Link->"parse"

Wrapper for HTTP::Link->"parse_hash"

BUGS

Please report any bugs or feature requests on the bugtracker website https://github.com/zurborg/libhttp-link-perl/issues

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

AUTHOR

David Zurborg <zurborg@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2015 by David Zurborg.

This is free software, licensed under:

  The ISC License