Skip to content

Commit

Permalink
Fix problematic retransmission of authentication token
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
JojOatXGME committed May 4, 2024
1 parent c40d89d commit f763877
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 40 deletions.
23 changes: 4 additions & 19 deletions dist/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 5 additions & 21 deletions src/utils/github-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down

0 comments on commit f763877

Please sign in to comment.