IKHSAN
EN Read in EnglishID

pixies

Publik
Branch
master
Commit terakhir
9b0697f26 Oktober 2026

downloadHelper.js

Buka raw
import fs from 'node:fs';
import os from 'node:os';
import path from 'node:path';
import { get } from 'node:https';
import { randomBytes } from 'node:crypto';
import decompress from 'decompress';
import decompressTarGz from 'decompress-targz';
import decompressUnzip from 'decompress-unzip';

export const tmpFile = (suffix = '') =>
    path.join(os.tmpdir(), randomBytes(16).toString('hex') + suffix);

export const downloadToFile = (url, destPath) => new Promise((resolve, reject) => {
    get(url, (res) => {
        if (res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
            res.resume();
            return resolve(downloadToFile(res.headers.location, destPath));
        }
        if (res.statusCode !== 200) {
            res.resume();
            return reject(new Error(`Download failed: ${url} returned ${res.statusCode}`));
        }
        const writeStream = fs.createWriteStream(destPath);
        res.pipe(writeStream);
        writeStream.on('finish', () => resolve());
        writeStream.on('error', reject);
        res.on('error', reject);
    }).on('error', reject);
});

export const extractBinary = (archivePath, outputDir, binaryRegex, outputName) =>
    decompress(archivePath, outputDir, {
        plugins: [decompressTarGz(), decompressUnzip()],
        filter: file => binaryRegex.test(file.path),
        map: file => {
            file.path = outputName;
            return file;
        }
    });
byte
1.459
baris
40
Jenis
js
Commit terakhir
26 Oktober 2026