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
link_header(rel:, page:)
click to toggle source
# File lib/geared_pagination/headers.rb, line 32 def link_header(rel:, page:) %{<#{uri(page: page)}>; rel="#{rel}"} end
next_page_link_header()
click to toggle source
# File lib/geared_pagination/headers.rb, line 28 def next_page_link_header link_header(rel: :next, page: page.next_param).to_s 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