Fix problematic retransmission of authentication token

The retransmission of the authentication token to the server providing
the artifact caused the following errors when using Artifacts v4:

  HTTPError: Response code 400 (Authentication information is not given
  in the correct format. Check the value of Authorization header.)

It looks like the service serving the artifacts does not expect the
authentication header, and therefore complaines about inproper use of
the authentication header. Delegating the redirect-handling to the `got`
library fixes the issue according to my tsts.
This commit is contained in:
Johannes Spangenberg 2024-05-04 13:43:51 +02:00
parent c40d89d5e9
commit f763877804
2 changed files with 9 additions and 40 deletions

23
dist/index.js generated vendored
View file

@ -2151,26 +2151,11 @@ function downloadArtifact(octokit, artifactId, fileName, token) {
const headers = {
Authorization: `Bearer ${token}`
};
const resp = yield (0, got_1.default)(req.url, {
headers,
followRedirect: false
});
core.info(`Fetch artifact URL: ${resp.statusCode} ${resp.statusMessage}`);
if (resp.statusCode !== 302) {
throw new Error('Fetch artifact URL failed: received unexpected status code');
}
const url = resp.headers.location;
if (url === undefined) {
const receivedHeaders = Object.keys(resp.headers);
core.info(`Received headers: ${receivedHeaders.join(', ')}`);
throw new Error('Location header was not found in API response');
}
if (typeof url !== 'string') {
throw new Error(`Location header has unexpected value: ${url}`);
}
const downloadStream = got_1.default.stream(url, { headers });
const downloadStream = got_1.default.stream(req.url, { headers });
const fileWriterStream = (0, fs_1.createWriteStream)(fileName);
core.info(`Downloading ${url}`);
downloadStream.on('redirect', response => {
core.info(`Downloading ${response.headers.location}`);
});
downloadStream.on('downloadProgress', ({ transferred }) => {
core.info(`Progress: ${transferred} B`);
});