module Metova::Responders::PaginationResponder
Public Class Methods
new(*)
click to toggle source
Calls superclass method
# File lib/metova/responders/pagination_responder.rb, line 5 def initialize(*) super if response_should_be_paginated? @resource = paginate(@resource) @links = [] add_next_to_link_header add_last_to_link_header end end
Private Instance Methods
add_last_to_link_header()
click to toggle source
# File lib/metova/responders/pagination_responder.rb, line 30 def add_last_to_link_header add_to_link_header 'last', last_page if last_page end
add_next_to_link_header()
click to toggle source
# File lib/metova/responders/pagination_responder.rb, line 25 def add_next_to_link_header page = current_page + 1 add_to_link_header 'next', page if page <= last_page.to_i end
add_to_link_header(rel, page)
click to toggle source
# File lib/metova/responders/pagination_responder.rb, line 34 def add_to_link_header(rel, page) url = controller.url_for(request.params.merge(page: page)) @links << %Q[<#{url}>; rel="#{rel}"] controller.response.headers['Link'] = @links.join(', ') end
current_page()
click to toggle source
# File lib/metova/responders/pagination_responder.rb, line 40 def current_page @_current_page ||= controller.params[:page].to_i end
last_page()
click to toggle source
# File lib/metova/responders/pagination_responder.rb, line 44 def last_page @_last_page ||= @resource.total_pages end
paginate(resource)
click to toggle source
# File lib/metova/responders/pagination_responder.rb, line 16 def paginate(resource) resource.page(current_page).per(controller.params[:limit]) end
response_should_be_paginated?()
click to toggle source
# File lib/metova/responders/pagination_responder.rb, line 20 def response_should_be_paginated? controller.params.include?(:page) && controller.params.include?(:limit) end