我想获取特定GitHub代表的拉取请求和问题的数量。目前,我使用的方法确实很笨拙。
使用octokit gem和以下代码:
# Builds data that is sent to the API
def request_params
data = { }
# labels example: "bug,invalid,question"
data["labels"] = labels.present? ? labels : ""
# filter example: "assigned" "created" "mentioned" "subscribed" "all"
data["filter"] = filter
# state example: "open" "closed" "all"
data["state"] = state
return data
end
Octokit.auto_paginate = true
github = Octokit::Client.new(access_token: oauth_token)
github.list_issues("#{user}/#{repository}", request_params).count
接收到的数据非常大,因此在内存方面非常低效。我不需要有关这些问题的数据,仅X个问题(基于过滤器/状态/标签)。
我想到了一个解决方案,但无法实施。
基本上:做1请求以获取标题,在标题中应该有指向最后一页的链接。然后再向最后一页发出1个请求,并检查那里有多少个问题。然后我们可以计算:
count = ( number of pages * (issues-per-page - 1) ) + issues-on-last-page
但是我没有发现如何从octokit Authentificated Client获取请求标头信息。
如果有没有octokit的简单方法,我会很乐意使用它。
注意:我想解决此问题,因为请求请求的数量很高,并且上面的代码在Heroku上生成R14错误。
谢谢!
最佳答案
我觉得一种简单的方法是使用GitHub API,并通过使用per_page过滤器来限制要在页面中显示的PR的数量。例如:找出可以使用的回购OneGet / oneget的所有PR。 JSON响应具有字段“ total_count”,该字段给出了PR总数。而且,由于只列出了一个问题,因此响应相对较轻。
参考:Search Issues