summaryrefslogtreecommitdiff
path: root/src/main/util/downloader.ts
blob: 075097de2c506594eeae8c78c49698cc3b12e81e (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
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));
  });
}