Sha256: 610a086653c476e66081e253abb8a7182809189314818b085e5189fbc8244778
Contents?: true
Size: 1.27 KB
Versions: 2
Compression:
Stored size: 1.27 KB
Contents
# See the Pagy documentation: https://ddnexus.github.io/pagy/extras/headers # encoding: utf-8 # frozen_string_literal: true class Pagy # Add specialized backend methods to add pagination response headers module Backend ; private VARS[:headers] = { items: 'Page-Items', count: 'Total-Count', pages: 'Total-Pages' } include Helpers def pagy_headers_merge(pagy) response.headers.merge!(pagy_headers(pagy)) end def pagy_headers(pagy) hash = pagy_headers_hash(pagy) hash['Link'] = hash['Link'].map{|rel, link| %(<#{link}>; rel="#{rel}")}.join(', ') hash end def pagy_headers_hash(pagy) countless = defined?(Pagy::Countless) && pagy.is_a?(Pagy::Countless) rels = { 'first' => 1, 'prev' => pagy.prev, 'next' => pagy.next }; rels['last'] = pagy.last unless countless url_str = pagy_url_for(Frontend::MARKER, pagy, :url) hash = { 'Link' => Hash[rels.map{|rel, n|[rel, url_str.sub(Frontend::MARKER, n.to_s)] if n}.compact] } headers = pagy.vars[:headers] hash[headers[:items]] = pagy.vars[:items] if headers[:items] unless countless hash[headers[:pages]] = pagy.pages if headers[:pages] hash[headers[:count]] = pagy.count if headers[:count] end hash end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pagy-2.1.1 | lib/pagy/extras/headers.rb |
pagy-2.1.0 | lib/pagy/extras/headers.rb |