lib/acfs/collections/paginatable.rb in acfs-0.42.0 vs lib/acfs/collections/paginatable.rb in acfs-0.43.0

- old
+ new

@@ -1,23 +1,18 @@ module Acfs::Collections + # module Paginatable extend ActiveSupport::Concern included do - def self.operation(action, opts = {}, &block) + def self.operation(_action, opts = {}, &_block) opts[:url] end - end - def total_pages - @total_pages + attr_reader :total_pages, :current_page end - def current_page - @current_page - end - def process_response(response) setup_params response.request.params if response.request setup_headers response.headers end @@ -36,36 +31,41 @@ 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}'." - end + return unless relations[rel] + + @resource_class.all nil, url: relations[rel], &block end private + def relations @relations ||= {} end def setup_headers(headers) - @total_pages = Integer(headers['X-Total-Pages']) if headers['X-Total-Pages'] + 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 + relations[Regexp.last_match[2]] = Regexp.last_match[1] end end end def setup_params(params) - @current_page = Integer(params.fetch(:page, 1)) rescue params[:page] + @current_page = begin + Integer params.fetch(:page, 1) + rescue ArgumentError + params[:page] + end end end end