summaryrefslogtreecommitdiff
path: root/src/main/util/downloader.ts
blob: 2a25b522ac89b185eac9696777c08f6d3f64d795 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var fs = require("fs");
var request = require("request");
var progress = require("request-progress");

export type Progress = {
  percent: number;
  speed: number;
  size: {
    total: number;
    transfered: number;
  };
  time: {
    elapsed: number;
    remaining: number;
  };
};

export function download(
  url: string,
  targetLocation: string,
  onprogress: (state: Progress) => void
): Promise<any> {
  return new Promise((resolve: any, reject: any) => {
    progress(request(url), {
      throttle: 500,
    })
      .on("progress", onprogress)
      .on("error", reject)
      .on("end", resolve)
      .pipe(fs.createWriteStream(targetLocation));
  });
}