link: github.com/peterhellberg/link Index | Examples | Files

package link

import "github.com/peterhellberg/link"

Package link parses Link headers used for pagination, as defined in RFC 5988

Installation

Just go get the package:

go get -u github.com/peterhellberg/link

Usage

A small usage example

package main

import (
	"fmt"
	"net/http"

	"github.com/peterhellberg/link"
)

func main() {
	for _, l := range link.Parse(`<https://example.com/?page=2>; rel="next"; foo="bar"`) {
		fmt.Printf("URI: %q, Rel: %q, Extra: %+v\n", l.URI, l.Rel, l.Extra)
		// URI: "https://example.com/?page=2", Rel: "next", Extra: map[foo:bar]
	}

	if resp, err := http.Get("https://api.github.com/search/code?q=Println+user:golang"); err == nil {
		for _, l := range link.ParseResponse(resp) {
			fmt.Printf("URI: %q, Rel: %q, Extra: %+v\n", l.URI, l.Rel, l.Extra)
			// URI: "https://api.github.com/search/code?q=Println+user%3Agolang&page=2", Rel: "next", Extra: map[]
			// URI: "https://api.github.com/search/code?q=Println+user%3Agolang&page=34", Rel: "last", Extra: map[]
		}
	}
}

Index

Examples

Package Files

doc.go link.go

type Group Uses

type Group map[string]*Link

Group returned by Parse, contains multiple links indexed by "rel"

func Parse Uses

func Parse(s string) Group

Parse parses the provided string into a Group

Code:

l := Parse(`<https://example.com/?page=2>; rel="next"; title="foo"`)["next"]

fmt.Printf("URI: %q, Rel: %q, Extra: %+v\n", l.URI, l.Rel, l.Extra)

Output:

URI: "https://example.com/?page=2", Rel: "next", Extra: map[title:foo]

func ParseHeader Uses

func ParseHeader(h http.Header) Group

ParseHeader retrieves the Link header from the provided http.Header and parses it into a Group

func ParseRequest Uses

func ParseRequest(req *http.Request) Group

ParseRequest parses the provided *http.Request into a Group

func ParseResponse Uses

func ParseResponse(resp *http.Response) Group

ParseResponse parses the provided *http.Response into a Group

type Link struct {
    URI   string
    Rel   string
    Extra map[string]string
}

Link contains a Link item with URI, Rel, and other non-URI components in Extra.

func (*Link) String Uses

func (l *Link) String() string

String returns the URI

Package link imports 3 packages (graph) and is imported by 25 packages. Updated 2019-11-14. Refresh now. Tools for package owners.