I have found a creative way to deal with paginated APIs when using faraday as an HTTP client. But I am pretty sure this is not the way it should be done. I had a look at the docs but did not find a proper solution. What is the correct way to handle pagination in faraday?
# get all group members
# we need to deal with pagination
get_group_members = connection.get('/rest/api/2/group/member', {groupname: 'jira-servicedesk-users', includeInactiveUsers: false })
group_members_response = JSON.parse(get_group_members.body)
total_pages = group_members_response['total']/50 +1
if total_pages == 0
group_members = group_members_response['values']
group_members.each do |member|
if user_login_date.has_key?(member['name'])
jsd_user_list[member['name']] = user_login_date[member['name']]
else
jsd_user_list[member['name']] = {}
end
end
else
page_counter = 0
total_pages.times do |page|
get_paginated_group_members = connection.get('/rest/api/2/group/member', {groupname: 'jira-servicedesk-users', includeInactiveUsers: false, startAt: page_counter })
paginated_group_members_response = JSON.parse(get_paginated_group_members.body)
paginated_group_members = paginated_group_members_response['values']
paginated_group_members.each do |member|
if user_login_date.has_key?(member['name'])
jsd_user_list[member['name']] = user_login_date[member['name']]
else
jsd_user_list[member['name']] = {}
end
end
page_counter+=50
end
end