通过比特桶睡觉接口获取所有拉流请求评论 [英] Fetch All Pull-Request Comments Via Bitbucket REST API
问题描述
这是如何根据Bitbucket的文档检索特定拉取请求的注释:
虽然我确实有Pull-Request ID并格式化了正确的URL,但我仍然收到400响应错误。我可以发帖请求发表评论,但我不能发帖。在进一步阅读之后,我注意到为该端点列出的六个参数并没有显示为"可选"。似乎需要提供这些内容才能检索所有注释。但是这些参数到底是什么呢?我觉得他们的描述一点帮助也没有。如有任何帮助,我们将不胜感激!
推荐答案
fromHash
和toHash
只有在diffType
未设置为EFFECTIVE
时才是必需的。state
对我来说似乎也是可选的(不包括它时没有给我一个错误),并且anchorState
指定要提取哪种类型的注释-您可能希望ALL
出现在那里。据我所知,path
包含要从中读取注释的文件的路径。(例如:src/a.py和src/b.py已更改->;指定要获取其中哪些注释)
然而,这可能不是您想要的。我假设您要获取所有评论。
您可以通过/rest/api/1.0/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/activities
执行此操作,其中还包括其他活动,如审阅,因此您必须进行一些筛选。
我不会粘贴文档中的示例数据,也不会粘贴我测试过一次的Bitbucket实例中的示例数据,因为json响应相当长。正如我已经说过的,在链接的页面上有一个示例响应。我还认为,下载后您会知道如何获取您想要的数据,因为这是一个问答论坛,而不是为我编程(";PROGRAM";PACE:B
)作为一个小的快速入门:您可以像这样使用curl
curl -u <your_username>:<your_password> https://<bitbucket-url>/rest/api/1.0/projects/<project-key>/repos/<repo-name>/pull-requests/<pr-id>/activities
它将打印响应json。
使用requests模块Python版本卷曲代码段:import requests
url = "<your-url>" # see above on how to assemble your url
r = requests.get(
url,
params={}, # you'll need this later
auth=requests.auth.HTTPBasicAuth("your-username", "your-password")
)
请注意,结果是根据api documentation进行分页的,因此您必须做一些额外的工作才能构建完整的列表:要么设置一个令人讨厌的高限制(脏),要么继续发出请求,直到获取完所有内容。我强烈推荐后者。
您可以使用start
和limit
参数控制您获得的数据,您可以直接将它们追加到URL(例如https://bla/asdasdasd/activity?start=25
),或者更清楚地将它们添加到params
字典中,如下所示:
requests.get(
url,
params={
"start": 25,
"limit": 123
}
)
放在一起:
def get_all_pr_activity(url):
start = 0
values = []
while True:
r = requests.get(url, params={
"limit": 10, # adjust this limit to you liking - 10 is probably too low
"start": start
}, auth=requests.auth.HTTPBasicAuth("your-username", "your-password"))
values.extend(r.json()["values"])
if r.json()["isLastPage"]:
return values
start = r.json()["nextPageStart"]
print([x["id"] for x in get_all_pr_activity("my-bitbucket-url")])
将打印活动ID列表,例如[77190, 77188, 77123, 77136]
,依此类推。当然,您可能不应该在那里硬编码您的用户名和密码-这只是一个示例,而不是生产就绪的代码。
最后,要通过函数内部的操作来过滤,可以将return values
替换为
return [activity for activity in values if activity["action"] == "COMMENTED"]
这篇关于通过比特桶睡觉接口获取所有拉流请求评论的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!