背景
我们正在为我们的支持团队编写一些文档。 我们想在文档中包含链接到存储在私有GitHub存储库中的文件。 如果有人重构私有GitHub存储库中的代码,我们不希望文档变得过时,因此我正在设置一个CI作业,使用jsoup(如果您感兴趣)解析文档并查找所有链接。 一旦我们获得了所有链接,我们开始检查它们。
注意:我们编写了一个自定义链接检查器,因为我们拥有的关键链接之一是用于我们的监控解决方案的,很遗憾(也可以理解)我们正在使用的SaaS对警报的URL进行任何未经身份验证的请求都会返回404。 SaaS本身使用2FA访问Web UI,因此我们最终做的是解析URL,然后构造等效调用SaaS API来验证链接。 对于我们使用的监控系统,这很容易:所有URL都具有相同的格式。
问题
我们能够使用个人访问令牌验证随机的GitHub URL是否有效(理想情况下仅使用curl
- 我可以从那里转换为我的选择HTTP客户端,并且curl
会给出更通用的答案)吗?如果可以,该如何操作?
这些URL可能是:
- 直接到存储库URL:
https://github.com/<org>/<repo>
- 直接到分支URL:
https://github.com/<org>/<repo>/tree/<branch>
- 文件URL:
https://github.com/<org>/<repo>/blob/<path/to/file>
- 差异URL:
https://github.com/<org>/<repo>/compare/[<branch>...]<branch>
- 基于存储库存在且在子路径中不变的其他URL,例如
https://github.com/<org>/<repo>/pulls
,https://github.com/<org>/<repo>/settings/collaboration
等 - 以及谁知道人们将在文档中添加什么其他URL...
我尝试过但没有成功的方法
使用个人访问令牌作为密码进行HTTP基本身份验证,例如:
curl -I -u stephenc:2....token.redacted....b https://github.com/stephenc/<repo-name>
HTTP/1.1 404 Not Found
HTTP Bearer 身份验证,例如:
curl -I -H "Authorization: bearer 2....token.redacted....b" https://github.com/stephenc/<repo-name>
HTTP/1.1 404 Not Found