mirror of https://github.com/actions/toolkit
testing abort signal
parent
68f22927e7
commit
fa862a6a82
|
@ -17,6 +17,8 @@ import {
|
||||||
} from '../../generated'
|
} from '../../generated'
|
||||||
import {getBackendIdsFromToken} from '../shared/util'
|
import {getBackendIdsFromToken} from '../shared/util'
|
||||||
import {ArtifactNotFoundError} from '../shared/errors'
|
import {ArtifactNotFoundError} from '../shared/errors'
|
||||||
|
import {once} from 'events'
|
||||||
|
import {sign} from 'crypto'
|
||||||
|
|
||||||
const scrubQueryParameters = (url: string): string => {
|
const scrubQueryParameters = (url: string): string => {
|
||||||
const parsed = new URL(url)
|
const parsed = new URL(url)
|
||||||
|
@ -40,16 +42,23 @@ async function exists(path: string): Promise<boolean> {
|
||||||
async function streamExtract(url: string, directory: string): Promise<void> {
|
async function streamExtract(url: string, directory: string): Promise<void> {
|
||||||
const client = new httpClient.HttpClient(getUserAgentString())
|
const client = new httpClient.HttpClient(getUserAgentString())
|
||||||
const response = await client.get(url)
|
const response = await client.get(url)
|
||||||
|
const ac = new AbortController()
|
||||||
|
const signal = ac.signal
|
||||||
if (response.message.statusCode !== 200) {
|
if (response.message.statusCode !== 200) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Unexpected HTTP response from blob storage: ${response.message.statusCode} ${response.message.statusMessage}`
|
`Unexpected HTTP response from blob storage: ${response.message.statusCode} ${response.message.statusMessage}`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
response.message
|
response.message
|
||||||
.pipe(unzip.Extract({path: directory}))
|
.pipe(unzip.Extract({path: directory}))
|
||||||
|
.once('abort', () => {
|
||||||
|
signal.addEventListener('abort', () => {
|
||||||
|
throw new Error(
|
||||||
|
`Unexpected HTTP response from blob storage: ${response.message.statusCode} ${signal.reason}`
|
||||||
|
)
|
||||||
|
})
|
||||||
|
})
|
||||||
.on('close', resolve)
|
.on('close', resolve)
|
||||||
.on('error', reject)
|
.on('error', reject)
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue