Merge "fix(libfetchers): set GitHub API version header, closes #255" into main
This commit is contained in:
commit
72292671a9
|
@ -78,6 +78,9 @@ jade:
|
||||||
forgejo: jade
|
forgejo: jade
|
||||||
github: lf-
|
github: lf-
|
||||||
|
|
||||||
|
kiara:
|
||||||
|
github: KiaraGrouwstra
|
||||||
|
|
||||||
kjeremy:
|
kjeremy:
|
||||||
github: kjeremy
|
github: kjeremy
|
||||||
|
|
||||||
|
|
23
doc/manual/rl-next/x-github-api-header.md
Normal file
23
doc/manual/rl-next/x-github-api-header.md
Normal 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.
|
|
@ -289,10 +289,10 @@ struct GitHubInputScheme : GitArchiveInputScheme
|
||||||
// urls so we do not run into rate limits.
|
// urls so we do not run into rate limits.
|
||||||
const auto urlFmt =
|
const auto urlFmt =
|
||||||
host != "github.com"
|
host != "github.com"
|
||||||
? "https://%s/api/v3/repos/%s/%s/tarball/%s"
|
? "https://%s/api/v3/repos/%s/%s/tarball/%s"
|
||||||
: headers.empty()
|
: !getAccessToken(host)
|
||||||
? "https://%s/%s/%s/archive/%s.tar.gz"
|
? "https://%s/%s/%s/archive/%s.tar.gz"
|
||||||
: "https://api.%s/repos/%s/%s/tarball/%s";
|
: "https://api.%s/repos/%s/%s/tarball/%s";
|
||||||
|
|
||||||
const auto url = fmt(urlFmt, host, getOwner(input), getRepo(input),
|
const auto url = fmt(urlFmt, host, getOwner(input), getRepo(input),
|
||||||
input.getRev()->to_string(Base::Base16, false));
|
input.getRev()->to_string(Base::Base16, false));
|
||||||
|
@ -308,6 +308,13 @@ struct GitHubInputScheme : GitArchiveInputScheme
|
||||||
.applyOverrides(input.getRef(), input.getRev())
|
.applyOverrides(input.getRef(), input.getRev())
|
||||||
.clone(destDir);
|
.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
|
struct GitLabInputScheme : GitArchiveInputScheme
|
||||||
|
|
Loading…
Reference in a new issue