Sha256: c4fb96938b719c91e0b8cc4b85e04526046837e168e163e62ad5e9c4fe86a5ac

Contents?: true

Size: 1.07 KB

Versions: 20

Compression:

Stored size: 1.07 KB

Contents

module Gris
  module PaginatedPresenter
    def self.included(base)
      base.class_eval do
        include Gris::Presenter

        property :total_count
        property :total_pages
        property :current_page
        property :next_page
        property :prev_page

        link :self do |opts|
          "#{request_url(opts)}?#{query_string_for_page(represented.current_page, opts)}"
        end

        link :next do |opts|
          "#{request_url(opts)}?#{query_string_for_page(represented.next_page, opts)}" if represented.next_page
        end

        link :prev do |opts|
          "#{request_url(opts)}?#{query_string_for_page(represented.prev_page, opts)}" if represented.prev_page
        end

        private

        def request_url(opts)
          request = Grape::Request.new(opts[:env])
          "#{request.base_url}#{opts[:env]['PATH_INFO']}"
        end

        def query_string_for_page(page, opts)
          qs = Rack::Utils.parse_nested_query(opts[:env]['QUERY_STRING'])
          qs['page'] = page
          qs.to_query
        end
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
gris-0.6.8 lib/gris/output_formatters/paginated_presenter.rb
gris-0.6.7 lib/gris/output_formatters/paginated_presenter.rb
gris-0.6.6 lib/gris/output_formatters/paginated_presenter.rb
gris-0.6.5 lib/gris/output_formatters/paginated_presenter.rb
gris-0.6.2 lib/gris/output_formatters/paginated_presenter.rb
gris-0.6.1 lib/gris/output_formatters/paginated_presenter.rb
gris-0.6.0 lib/gris/output_formatters/paginated_presenter.rb
gris-0.5.9 lib/gris/output_formatters/paginated_presenter.rb
gris-0.5.8 lib/gris/output_formatters/paginated_presenter.rb
gris-0.5.7 lib/gris/output_formatters/paginated_presenter.rb
gris-0.5.6 lib/gris/output_formatters/paginated_presenter.rb
gris-0.5.5 lib/gris/output_formatters/paginated_presenter.rb
gris-0.5.4 lib/gris/output_formatters/paginated_presenter.rb
gris-0.5.3 lib/gris/output_formatters/paginated_presenter.rb
gris-0.5.2 lib/gris/output_formatters/paginated_presenter.rb
gris-0.5.1 lib/gris/output_formatters/paginated_presenter.rb
gris-0.5.0 lib/gris/output_formatters/paginated_presenter.rb
gris-0.4.9 lib/gris/output_formatters/paginated_presenter.rb
gris-0.4.8 lib/gris/output_formatters/paginated_presenter.rb
gris-0.4.7 lib/gris/output_formatters/paginated_presenter.rb