mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
37 lines
798 B
TypeScript
37 lines
798 B
TypeScript
import request from "request";
|
|
|
|
export interface DownloadFileOptions {
|
|
url: string;
|
|
gzip?: boolean;
|
|
timeout?: number;
|
|
}
|
|
|
|
export interface DownloadFileTicket {
|
|
url: string;
|
|
promise: Promise<Buffer>;
|
|
cancel(): void;
|
|
}
|
|
|
|
export function downloadFile({ url, timeout, gzip = true }: DownloadFileOptions): DownloadFileTicket {
|
|
const fileChunks: Buffer[] = [];
|
|
const req = request(url, { gzip, timeout });
|
|
const promise: Promise<Buffer> = new Promise((resolve, reject) => {
|
|
req.on("data", (chunk: Buffer) => {
|
|
fileChunks.push(chunk);
|
|
});
|
|
req.once("error", err => {
|
|
reject({ url, err });
|
|
});
|
|
req.once("complete", () => {
|
|
resolve(Buffer.concat(fileChunks));
|
|
});
|
|
});
|
|
return {
|
|
url,
|
|
promise,
|
|
cancel() {
|
|
req.abort();
|
|
}
|
|
};
|
|
}
|