lib/geared_pagination/headers.rb in geared_pagination-0.2 vs lib/geared_pagination/headers.rb in geared_pagination-1.0.0

- old
+ new

@@ -5,31 +5,38 @@ def initialize(page:, controller:) @page, @controller = page, controller end def apply - @controller.headers.update(headers) if applicable? + controller.headers.update(headers) if applicable? end private + attr_reader :page, :controller + delegate :request, to: :controller + 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? + h["X-Total-Count"] = page.recordset.records_count.to_s + h["Link"] = next_page_link_header unless page.last? end end def applicable? - @controller.request.format&.json? + request.format&.json? end def next_page_link_header - link_header(rel: :next, page_number: @page.next_number).to_s + link_header(rel: :next, page: page.next_param).to_s end - def link_header(rel:, page_number:) - uri = Addressable::URI.parse(@controller.request.url) - uri.query_values = (uri.query_values || {}).merge("page" => page_number) - %{<#{uri}>; rel="#{rel}"} + def link_header(rel:, page:) + %{<#{uri(page: page)}>; rel="#{rel}"} + end + + def uri(page:) + Addressable::URI.parse(request.url).tap do |uri| + uri.query_values = (uri.query_values || {}).merge("page" => page) + end.to_s end end end