Method: Atum::Core::Paginator#enumerator

Defined in:
lib/atum/core/paginator.rb

#enumeratorObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/atum/core/paginator.rb', line 12

def enumerator
  response = @initial_response
  Enumerator.new do |yielder|
    loop do
      items = @request.unenvelope(response.body)
      items.each { |item| yielder << item }

      break if items.count < response.limit

      new_options = @options.dup
      new_options[:query] = @options.fetch(:query, {}).merge(
        after: response.meta['cursors']['after'],
        limit: response.limit + LIMIT_INCREMENT)

      response = @request.make_request(new_options)
    end
  end.lazy
end