mirror of
https://github.com/dorny/test-reporter.git
synced 2025-12-15 13:57:09 +01:00
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:
parent
c40d89d5e9
commit
f763877804
2 changed files with 9 additions and 40 deletions
23
dist/index.js
generated
vendored
23
dist/index.js
generated
vendored
|
|
@ -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`);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -50,33 +50,17 @@ export async function downloadArtifact(
|
|||
const headers = {
|
||||
Authorization: `Bearer ${token}`
|
||||
}
|
||||
const resp = await got(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.stream(url, {headers})
|
||||
const downloadStream = got.stream(req.url, {headers})
|
||||
const fileWriterStream = 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`)
|
||||
})
|
||||
|
||||
await asyncStream(downloadStream, fileWriterStream)
|
||||
} finally {
|
||||
core.endGroup()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue