mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
* Fix: logs data disapearing causing crashes (#2566) Signed-off-by: Sebastian Malton <sebastian@malton.name> * Refactor helm-chart.api and improve kube validation and error handling (#2265) Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix: HPA's not sortable by age (#2565) Signed-off-by: Sebastian Malton <sebastian@malton.name> * Conditionally render status icon for kube meta (#2298) Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix custom resource loading spinner appears above extensions' cluster menus (#2344) Signed-off-by: Sebastian Malton <sebastian@malton.name> * Lens should point to the release docs (#2268) Signed-off-by: Sebastian Malton <sebastian@malton.name> * Refactor the Extensions settings page (#2221) Signed-off-by: Sebastian Malton <sebastian@malton.name> * try and get jest to not core dump Signed-off-by: Sebastian Malton <sebastian@malton.name>
47 lines
1.0 KiB
TypeScript
47 lines
1.0 KiB
TypeScript
import request from "request";
|
|
|
|
export interface DownloadFileOptions {
|
|
url: string;
|
|
gzip?: boolean;
|
|
timeout?: number;
|
|
}
|
|
|
|
export interface DownloadFileTicket<T> {
|
|
url: string;
|
|
promise: Promise<T>;
|
|
cancel(): void;
|
|
}
|
|
|
|
export function downloadFile({ url, timeout, gzip = true }: DownloadFileOptions): DownloadFileTicket<Buffer> {
|
|
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();
|
|
}
|
|
};
|
|
}
|
|
|
|
export function downloadJson(args: DownloadFileOptions): DownloadFileTicket<any> {
|
|
const { promise, ...rest } = downloadFile(args);
|
|
|
|
return {
|
|
promise: promise.then(res => JSON.parse(res.toString())),
|
|
...rest
|
|
};
|
|
}
|