Sha256: 0450dbd2eae77a043ff26939df38b044035ed0390c5116a55fa7d0969cad2738
Contents?: true
Size: 1.43 KB
Versions: 3
Compression:
Stored size: 1.43 KB
Contents
module Acfs::Collections # module Paginatable extend ActiveSupport::Concern included do def self.operation(action, opts = {}, &block) opts[:url] end attr_reader :total_pages, :current_page end def process_response(response) setup_params response.request.params if response.request setup_headers response.headers end def next_page(&block) page 'next', &block end def prev_page(&block) page 'prev', &block end def first_page(&block) page 'first', &block end def last_page(&block) page 'last', &block end def page(rel, &block) if relations[rel] @resource_class.all nil, url: relations[rel], &block else # raise ArgumentError.new "No relative page `#{rel}'." nil end end private def relations @relations ||= {} end def setup_headers(headers) if headers['X-Total-Pages'] @total_pages = Integer(headers['X-Total-Pages']) end setup_links headers['Link'] if headers['Link'] end def setup_links(links) links.split(/,\s+/).each do |link| if link =~ /^\s*<([^>]+)>.*\s+rel="([\w_-]+)".*$/ relations[$2] = $1 end end end def setup_params(params) @current_page = begin Integer params.fetch(:page, 1) rescue ArgumentError params[:page] end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
acfs-1.0.0.dev.1.b305 | lib/acfs/collections/paginatable.rb |
acfs-1.0.0.dev.1.b298 | lib/acfs/collections/paginatable.rb |
acfs-1.0.0.dev.1.b297 | lib/acfs/collections/paginatable.rb |