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