Module: Legion::Extensions::ServiceNow::Helpers::Pagination

Included in:
Client
Defined in:
lib/legion/extensions/service_now/helpers/pagination.rb

Instance Method Summary collapse

Instance Method Details

#paginate(method_name, **opts) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/legion/extensions/service_now/helpers/pagination.rb', line 8

def paginate(method_name, **opts)
  results = []
  offset = 0
  limit = opts.fetch(:sysparm_limit, 100)

  loop do
    response = public_send(method_name, **opts, sysparm_limit: limit, sysparm_offset: offset)
    key = response.keys.first
    batch = response[key]
    break if batch.nil? || batch.empty?

    results.concat(batch)
    break if batch.size < limit

    offset += limit
  end

  results
end