Module: MailchimpAPI::Support::Enumerable

Included in:
MergeField
Defined in:
lib/mailchimp_api/resources/support/enumerable.rb

Instance Method Summary collapse

Instance Method Details

#enumerator(page_size: 10, params: {}) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/mailchimp_api/resources/support/enumerable.rb', line 5

def enumerator(page_size: 10, params: {})
  CachingEnumerator.new do |y|
    number_of_items = count params: params
    number_of_pages = (number_of_items / page_size).ceil
    current_page = 0

    loop do
      all_params = {
        offset: current_page * page_size,
        count: page_size
      }.merge(params)

      results = find :all, params: all_params
      current_page += 1

      results.each do |result|
        y.yield result
      end

      break if results.empty? || (current_page >= number_of_pages)
    end
  end
end