class Shoptet::ApiEnumerator
Public Class Methods
new(base_url, filters, data_key, api)
click to toggle source
Calls superclass method
# File lib/shoptet/api_enumerator.rb, line 5 def initialize base_url, filters, data_key, api @base_url = base_url @filters = filters @data_key = data_key || URI(base_url).path.split('/').last @api = api @enum = Enumerator.new do |y| first_page.dig('data', @data_key).each { y.yield _1 } if total_pages > 1 (2..(total_pages - 1)).each do |page| @api.request(base_url, filters.merge(page: page)) .dig('data', @data_key) .each { y.yield _1 } end last_page.dig('data', @data_key).each { y.yield _1 } end end super @enum end
Public Instance Methods
first_page()
click to toggle source
# File lib/shoptet/api_enumerator.rb, line 28 def first_page @first_page ||= @api.request(@base_url, @filters) end
last_page()
click to toggle source
# File lib/shoptet/api_enumerator.rb, line 32 def last_page return first_page if total_pages < 2 @last_page ||= @api.request(@base_url, @filters.merge(page: total_pages)) end
size()
click to toggle source
# File lib/shoptet/api_enumerator.rb, line 42 def size first_page.dig('data', 'paginator', 'totalCount') end
total_pages()
click to toggle source
# File lib/shoptet/api_enumerator.rb, line 38 def total_pages first_page.dig('data', 'paginator', 'pageCount') || 0 end