296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
|
# File 'lib/paymos/client.rb', line 296
def each(fetch, filters, max_pages: 100, &block)
raise ArgumentError, 'max_pages must be a positive integer' unless max_pages.is_a?(Integer) && max_pages.positive?
filters = filters.dup
cursor = filters[:cursor]
max_pages.times do
page = fetch.call(**filters)
page.items.each(&block)
next_cursor = page.next_cursor
return if next_cursor.nil? || next_cursor.to_s.empty?
raise Error, 'Paymos API returned the same pagination cursor twice' if next_cursor == cursor
cursor = next_cursor
filters[:cursor] = cursor
end
end
|