Merge "fix(libfetchers): set GitHub API version header, closes #255" into main

This commit is contained in:
Kiara Grouwstra 2024-11-05 22:44:29 +00:00 committed by Gerrit Code Review
commit 72292671a9
3 changed files with 37 additions and 4 deletions

View file

@ -78,6 +78,9 @@ jade:
forgejo: jade
github: lf-
kiara:
github: KiaraGrouwstra
kjeremy:
github: kjeremy

View file

@ -0,0 +1,23 @@
---
synopsis: "Set `X-GitHub-Api-Version` header"
issues: [fj#255]
cls: [1925]
category: Development
credits: kiara
---
Sets the `X-GitHub-Api-Version` header to `2022-11-28` for calls to the
GitHub API.
This follows the later version as per
https://docs.github.com/en/rest/about-the-rest-api/api-versions?apiVersion=2022-11-28.
This affected the check on whether to use the API versus unauthenticated
calls as well, given the headers would no longer be empty if the
authentication token were missing.
The workaround to this used here is to use a check similar to an existing
check for the token.
In the current implementation, headers are (still) similarly sent to
non-authenticated as well as GitHub on-prem calls.
For what it's worth, manual curl calls with such a header seemed to
break nor unauthenticated calls nor ones to the github.com API.

View file

@ -289,10 +289,10 @@ struct GitHubInputScheme : GitArchiveInputScheme
// urls so we do not run into rate limits.
const auto urlFmt =
host != "github.com"
? "https://%s/api/v3/repos/%s/%s/tarball/%s"
: headers.empty()
? "https://%s/%s/%s/archive/%s.tar.gz"
: "https://api.%s/repos/%s/%s/tarball/%s";
? "https://%s/api/v3/repos/%s/%s/tarball/%s"
: !getAccessToken(host)
? "https://%s/%s/%s/archive/%s.tar.gz"
: "https://api.%s/repos/%s/%s/tarball/%s";
const auto url = fmt(urlFmt, host, getOwner(input), getRepo(input),
input.getRev()->to_string(Base::Base16, false));
@ -308,6 +308,13 @@ struct GitHubInputScheme : GitArchiveInputScheme
.applyOverrides(input.getRef(), input.getRev())
.clone(destDir);
}
Headers makeHeadersWithAuthTokens(const std::string & host) const
{
Headers headers = GitArchiveInputScheme::makeHeadersWithAuthTokens(host);
headers.emplace_back("X-GitHub-Api-Version", "2022-11-28");
return headers;
}
};
struct GitLabInputScheme : GitArchiveInputScheme