lib/acfs/collections/paginatable.rb in acfs-1.0.0.dev.1.b305 vs lib/acfs/collections/paginatable.rb in acfs-1.0.0
- old
+ new
@@ -1,17 +1,16 @@
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
- attr_reader :total_pages, :current_page
+ attr_reader :total_pages, :current_page, :total_count
end
def process_response(response)
setup_params response.request.params if response.request
setup_headers response.headers
@@ -32,16 +31,13 @@
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
+ return unless relations[rel]
+
+ @resource_class.all nil, url: relations[rel], &block
end
private
def relations
@@ -51,16 +47,20 @@
def setup_headers(headers)
if headers['X-Total-Pages']
@total_pages = Integer(headers['X-Total-Pages'])
end
+ if headers['X-Total-Count']
+ @total_count = Integer(headers['X-Total-Count'])
+ 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)