【问题标题】:How to get git hub push events using curl如何使用 curl 获取 git hub 推送事件
【发布时间】:2020-04-06 18:54:03
【问题描述】:

我需要使用 curl 或 git api 为我的组织获取远程存储库中的所有推送事件。 我无法在 GitHub 中使用 web 挂钩功能,因为我的 webhook 服务器在防火墙后面运行。所以 github.com 无法调用我的 webhook url。我需要使用 curl 获取 webhook 有效负载

当我尝试时:-

curl -X GET -u $GITHUB_USER:$GITHUB_PASSWORD https://api.github.com/repos/:org/:repo/events

获取推送和创建等所有事件,我只需要推送事件

【问题讨论】:

    标签: python github github-api


    【解决方案1】:

    您可以将该 curl 命令的输出通过管道传输到 jq,然后仅选择类型为 PushEvent 的事件,如下所示:

    curl \
        -X GET \
        -u $GITHUB_USER:$GITHUB_PASSWORD \
        https://api.github.com/repos/:org/:repo/events \
      | jq '.[] | select(.type == "PushEvent")'
    

    请注意,第二个 | 管道位于 '' 单引号内,因为它是 jq 参数的一部分。它不适用于外壳。

    【讨论】:

    • 如何使用 python json 做同样的事情
    • Python 不支持 JSON 作为本机数据类型,因此您需要 import json 然后使用该库(可能是 json.load()json.loads())将其转换为 Python @ 987654330@。至于如何首先获取数据,而不是使用curl,您可以使用import requests,然后使用该库为目标URL 构建HTTP GET 请求,使用相同的身份验证凭据。如果您这样做,并且 URL 返回有效的 JSON,则请求库返回的响应对象将具有一个 json() 方法,该方法将为您转换为 dict
    • 如果这很难理解,您可以打开一个新问题来询问有关 Python 版本的问题。这样更容易给出明确的答案。
    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 2012-02-06
    • 1970-01-01
    • 2021-12-23
    • 2018-08-29
    • 2012-11-24
    • 2013-04-20
    • 1970-01-01
    相关资源
    最近更新 更多