Merge pull request #10829 from nandahkrishna/github-pagination

utils/github/api: simplify pagination
This commit is contained in:
Nanda H Krishna
2021-03-12 17:42:57 +05:30
committed by GitHub
2 changed files with 11 additions and 5 deletions
+4 -5
View File
@@ -306,11 +306,11 @@ module GitHub
end
def public_member_usernames(org, per_page: 100)
url = "#{API_URL}/orgs/#{org}/public_members?per_page=#{per_page}"
url = "#{API_URL}/orgs/#{org}/public_members"
members = []
(1..API_MAX_PAGES).each do |page|
result = API.open_rest("#{url}&page=#{page}").map { |member| member["login"] }
API.paginate_rest(url, per_page: per_page) do |result|
result = result.map { |member| member["login"] }
members.concat(result)
return members if result.length < per_page
@@ -562,8 +562,7 @@ module GitHub
raise API::Error, "Getting #{commit_count} commits would exceed limit of #{API_MAX_ITEMS} API items!"
end
(1..API_MAX_PAGES).each do |page|
result = API.open_rest(commits_api + "?per_page=#{per_page}&page=#{page}")
API.paginate_rest(commits_api, per_page: per_page) do |result, page|
commits.concat(result.map { |c| c["sha"] })
return commits if commits.length == commit_count
+7
View File
@@ -249,6 +249,13 @@ module GitHub
end
end
def paginate_rest(url, per_page: 100)
(1..API_MAX_PAGES).each do |page|
result = API.open_rest("#{url}?per_page=#{per_page}&page=#{page}")
yield(result, page)
end
end
def open_graphql(query, scopes: [].freeze)
data = { query: query }
result = open_rest("https://api.github.com/graphql", scopes: scopes, data: data, request_method: "POST")