mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-29 05:15:04 +00:00
Allow to use a Github Auth token for fetching releases
This change allows to use a authorization token provided by Github in order to fetch metadata for a RA release. Using an authorization token prevents to get rate-limited in environments where lots of RA users use a shared client IP (e.g. behind a company NAT). The auth token is stored in `ExtensionContext.globalState`. As far as I could observe through testing with a local WSL2 environment that state is synced between an extension installed locally and a remote version. The change provides no explicit command to query for an auth token. However in case a download fails it will provide a retry option as well as an option to enter the auth token. This should be more discoverable for most users. Closes #3688
This commit is contained in:
parent
bcdedbb3d5
commit
b93ced6f63
3 changed files with 72 additions and 4 deletions
|
@ -18,7 +18,8 @@ const OWNER = "rust-analyzer";
|
|||
const REPO = "rust-analyzer";
|
||||
|
||||
export async function fetchRelease(
|
||||
releaseTag: string
|
||||
releaseTag: string,
|
||||
githubToken: string | null | undefined,
|
||||
): Promise<GithubRelease> {
|
||||
|
||||
const apiEndpointPath = `/repos/${OWNER}/${REPO}/releases/tags/${releaseTag}`;
|
||||
|
@ -27,7 +28,12 @@ export async function fetchRelease(
|
|||
|
||||
log.debug("Issuing request for released artifacts metadata to", requestUrl);
|
||||
|
||||
const response = await fetch(requestUrl, { headers: { Accept: "application/vnd.github.v3+json" } });
|
||||
var headers: any = { Accept: "application/vnd.github.v3+json" };
|
||||
if (githubToken != null) {
|
||||
headers.Authorization = "token " + githubToken;
|
||||
}
|
||||
|
||||
const response = await fetch(requestUrl, { headers: headers });
|
||||
|
||||
if (!response.ok) {
|
||||
log.error("Error fetching artifact release info", {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue