class GearedPagination::Headers

Attributes

controller[R]
page[R]

Public Class Methods

new(page:, controller:) click to toggle source
# File lib/geared_pagination/headers.rb, line 5
def initialize(page:, controller:)
  @page, @controller = page, controller
end

Public Instance Methods

apply() click to toggle source
# File lib/geared_pagination/headers.rb, line 9
def apply
  controller.headers.update(headers) if applicable?
end

Private Instance Methods

applicable?() click to toggle source
# File lib/geared_pagination/headers.rb, line 24
def applicable?
  request.format&.json?
end
headers() click to toggle source
# File lib/geared_pagination/headers.rb, line 17
def headers
  Hash.new.tap do |h|
    h["X-Total-Count"] = page.recordset.records_count.to_s
    h["Link"] = next_page_link_header unless page.last?
  end
end
uri(page:) click to toggle source
# File lib/geared_pagination/headers.rb, line 36
def uri(page:)
  Addressable::URI.parse(request.url).tap do |uri|
    uri.query_values = (uri.query_values || {}).merge("page" => page)
  end.to_s
end