-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
Description
Example of code using pagination as enumerator
def self.paginated_get(path, options = {})
Enumerator.new do |y|
params = options.dup
page = nil
total = 0
size = params.delete(:size) { 50 }
loop do
response = get(path, { page: page, size: size }.merge(params))
data = JSON.parse(response.body)
objects = data["_embedded"].present? ?
data["_embedded"]["intelligenceObjects"] :
[]
total += objects.length
objects.each do |element|
y.yield element
end
break if (data["page"]["number"] >= (data["page"]["totalPages"] - 1) ||
objects.empty? ||
total >= MAX_OBJECTS)
page = data["page"]["number"] + 1
end
end
endusage:
Endpoint.paginated_get(params) do |response|
# do somthing
end