hal

package
v0.0.0-...-c63ad05 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2024 License: Apache-2.0, Apache-2.0 Imports: 8 Imported by: 81

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 ExecuteFunc

func ExecuteFunc(ctx context.Context, fn, param interface{}) (interface{}, bool, error)

func Handler

func Handler(fn, param interface{}) (http.Handler, error)

func Render

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

Render write data to w, after marshaling to json

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 implementors 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