module Apress::Api::ApiController::PaginationHelper

Public Class Methods

headers(collection, url) click to toggle source
# File lib/apress/api/api_controller/pagination_helper.rb, line 6
def self.headers(collection, url)
  result = {}

  result['X-Total-Count'] = collection.total_entries.to_s
  result['X-Total-Pages'] = collection.total_pages.to_s
  result['X-Per-Page'] = collection.per_page.to_s
  result['X-Page'] = collection.current_page.to_s

  numbers = page_numbers(collection)
  links = header_link_values(url, numbers)

  result['Link'] = links.join(', ') if links.present?

  result
end

Private Class Methods

page_numbers(collection) click to toggle source
# File lib/apress/api/api_controller/pagination_helper.rb, line 35
def self.page_numbers(collection)
  result = {}
  return result unless collection.total_pages > 1

  if collection.current_page > 1
    result[:first] = 1
    result[:prev] = collection.current_page - 1
  end

  if collection.current_page < collection.total_pages
    result[:last] = collection.total_pages
    result[:next] = collection.current_page + 1
  end

  result
end