Skip to content

Commit 94968f4

Browse files
committed
Fix response size calculation
The `response.size` is almost always set to `0`. However, the `Content-Length` header is returned by Azure and contains the size of the file.
1 parent c7bd9f9 commit 94968f4

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

extensions/ql-vscode/src/remote-queries/variant-analysis-results-manager.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,18 @@ export class VariantAnalysisResultsManager extends DisposableObject {
9090
const zipFilePath = join(resultDirectory, "results.zip");
9191

9292
const response = await fetch(repoTask.artifactUrl);
93+
94+
let responseSize = parseInt(response.headers.get("content-length") || "0");
95+
if (responseSize === 0 && response.size > 0) {
96+
responseSize = response.size;
97+
}
98+
9399
let amountDownloaded = 0;
94100
for await (const chunk of response.body) {
95101
await appendFile(zipFilePath, Buffer.from(chunk));
96102
amountDownloaded += chunk.length;
97103
await onDownloadPercentageChanged(
98-
Math.floor((amountDownloaded / response.size) * 100),
104+
Math.floor((amountDownloaded / responseSize) * 100),
99105
);
100106
}
101107

extensions/ql-vscode/test/vscode-tests/cli-integration/remote-queries/variant-analysis-results-manager.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,10 @@ describe(VariantAnalysisResultsManager.name, () => {
169169
(url: RequestInfo, _init?: RequestInit) => {
170170
if (url === dummyRepoTask.artifactUrl) {
171171
const response = new Response(Readable.from(generateInParts()));
172-
response.size = fileContents.length;
172+
response.headers.set(
173+
"Content-Length",
174+
fileContents.length.toString(),
175+
);
173176
return Promise.resolve(response);
174177
}
175178
return Promise.reject(new Error("Unexpected artifact URL"));

0 commit comments

Comments
 (0)