Пример #1
0
// SetPaginator defines values of the JSONLD Collection according to pagination request.
func (j *CollectionResource) SetPaginator(r *http.Request, paginator *api.Pagination) {

	j.TotalItems = paginator.Count()

	if paginator.HasOtherPages() {
		j.Type = "PagedCollection"
		j.ItemPerPage = paginator.PerPage
		j.CurrentPage = paginator.Page
	}

	q := r.URL.Query()

	if paginator.HasOtherPages() {
		q.Set("page", fmt.Sprintf("%d", 1))
		r.URL.RawQuery = q.Encode()
		j.FirstPage = r.URL.String()
	}
	if paginator.HasPrev() {
		q.Set("page", fmt.Sprintf("%d", paginator.Page-1))
		r.URL.RawQuery = q.Encode()
		j.PreviousPage = r.URL.String()
	}
	if paginator.HasNext() {
		q.Set("page", fmt.Sprintf("%d", paginator.Page+1))
		r.URL.RawQuery = q.Encode()
		j.NextPage = r.URL.String()
	}
	if paginator.HasOtherPages() {
		q.Set("page", fmt.Sprintf("%d", paginator.NumPages()))
		r.URL.RawQuery = q.Encode()
		j.LastPage = r.URL.String()
	}

}