module Pina::Utils::Pagination
Public Instance Methods
collect_items()
click to toggle source
# File lib/pina/utils/pagination.rb, line 27 def collect_items resource = self [].tap do |collection| loop do collection.push(*resource.items) resource = resource.next_page break unless resource end end end
first_page()
click to toggle source
# File lib/pina/utils/pagination.rb, line 8 def first_page resource.all end
last_page()
click to toggle source
# File lib/pina/utils/pagination.rb, line 16 def last_page paginate(_meta['pagination']['last']) end
next_page()
click to toggle source
# File lib/pina/utils/pagination.rb, line 4 def next_page paginate(_meta['pagination']['next']) end
paginate(page_url)
click to toggle source
# File lib/pina/utils/pagination.rb, line 20 def paginate(page_url) params = extract_params(page_url) return unless params&.fetch('page') resource.all(params) end
previous_page()
click to toggle source
# File lib/pina/utils/pagination.rb, line 12 def previous_page paginate(_meta['pagination']['previous']) end
Private Instance Methods
extract_params(url)
click to toggle source
# File lib/pina/utils/pagination.rb, line 46 def extract_params(url) return unless url index = url.index('?') return unless index params_to_hash(url[index + 1..-1]) end
params_to_hash(params)
click to toggle source
# File lib/pina/utils/pagination.rb, line 55 def params_to_hash(params) {}.tap do |params_hash| params.split('&').each do |element| param = element.split('=') params_hash[param.first] = param.last end end end
resource()
click to toggle source
# File lib/pina/utils/pagination.rb, line 42 def resource Object.const_get("Pina::#{self.class.to_s.split('::').last}") end