(response: Response, parsedUrl: URL)
| 240 | } |
| 241 | |
| 242 | function resolveDownloadFileName(response: Response, parsedUrl: URL): string { |
| 243 | const contentDisposition = response.headers.get('content-disposition'); |
| 244 | const filenameMatch = contentDisposition?.match(/filename\*?=(?:UTF-8'')?"?([^";]+)"?/i); |
| 245 | const headerName = filenameMatch?.[1]?.trim(); |
| 246 | if (headerName) return path.basename(headerName); |
| 247 | const urlName = path.basename(parsedUrl.pathname); |
| 248 | if (urlName) return urlName; |
| 249 | return 'downloaded-artifact.bin'; |
| 250 | } |
| 251 | |
| 252 | export function isBlockedSourceHostname(hostname: string): boolean { |
| 253 | if (!hostname) return true; |
no test coverage detected