hal

package
v0.0.0-...-b1bd2f5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 7, 2019 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const StandardPagingOptions = "{?cursor,limit,order}"

StandardPagingOptions is a helper string to make creating paged collection URIs simpler.

Variables

This section is empty.

Functions

func Handler

func Handler(fn func(context.Context, interface{}) (interface{}, error), params interface{}) http.HandlerFunc

Handler returns an HTTP Handler for function fn. If fn returns a non-nil error, the handler will use problem.Render. TODO: Use reflection to make the hal handler more generic.

func Render

func Render(w http.ResponseWriter, data interface{})

Render write data to w, after marshalling to json

func RenderToString

func RenderToString(data interface{}, pretty bool) ([]byte, error)

RenderToString renders the provided data as a json string

Types

type BasePage

type BasePage struct {
	FullURL  *url.URL `json:"-"`
	Embedded struct {
		Records []Pageable `json:"records"`
	} `json:"_embedded"`
}

BasePage represents the simplest page: one with no links and only embedded records. Can be used to build custom page-like resources

func (*BasePage) Add

func (p *BasePage) Add(rec Pageable)

Add appends the provided record onto the page

func (*BasePage) Init

func (p *BasePage) Init()

Init initialized the Records slice. This ensures that an empty page renders its records as an empty array, rather than `null`

type Link struct {
	Href      string `json:"href"`
	Templated bool   `json:"templated,omitempty"`
}
func NewLink(href string) Link

func (*Link) PopulateTemplated

func (l *Link) PopulateTemplated()

type LinkBuilder

type LinkBuilder struct {
	Base *url.URL
}

LinkBuilder is a helper for constructing URLs in horizon.

func (lb *LinkBuilder) Link(parts ...string) Link

Link returns a hal.Link whose href is each of the provided parts joined by '/'

func (*LinkBuilder) Linkf

func (lb *LinkBuilder) Linkf(format string, args ...interface{}) Link

Linkf provides a helper function that returns a link with an href created by passing the arguments into fmt.Sprintf

func (lb *LinkBuilder) PagedLink(parts ...string) Link

PagedLink creates a link using the `Link` method and appends the common paging options

type Links struct {
	Self Link `json:"self"`
	Next Link `json:"next"`
	Prev Link `json:"prev"`
}

Links represents the Links in a Page

type Page

type Page struct {
	Links Links `json:"_links"`
	BasePage
	Order  string `json:"-"`
	Limit  uint64 `json:"-"`
	Cursor string `json:"-"`
}

Page represents the common page configuration (i.e. has self, next, and prev links) and has a helper method `PopulateLinks` to automate their initialization.

func (*Page) InvertedOrder

func (p *Page) InvertedOrder() string

InvertedOrder returns the inversion of the page's current order. Used to populate the prev link

func (p *Page) PopulateLinks()

PopulateLinks sets the common links for a page.

type Pageable

type Pageable interface {
	PagingToken() string
}

Pageable impementors can be added to hal.Page collections

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL