11'use strict' ;
22
3- const request = require ( 'httpreq ' ) ;
3+ const axios = require ( 'axios ' ) ;
44const fs = require ( 'fs' ) ;
5+ const stream = require ( 'stream' ) ;
6+ const util = require ( 'util' ) ;
7+
8+ const pipeline = util . promisify ( stream . pipeline ) ;
59
610class HttpClient {
711 /**
@@ -12,47 +16,16 @@ class HttpClient {
1216 }
1317
1418 async getJson ( url ) {
15- return new Promise ( ( resolve , reject ) => {
16- request . get ( url , this . getHttpOptions ( ) , ( err , response ) => {
17- if ( err ) {
18- reject ( err ) ;
19- return ;
20- }
21-
22- try {
23- resolve ( JSON . parse ( response . body ) ) ;
24- } catch ( e ) {
25- reject ( new Error (
26- `Error while parsing '${ url } '. ${ e } . Data:\\n ${ response . body } `
27- ) ) ;
28- }
29- } ) ;
30- } ) ;
19+ const { data } = await axios . get ( url , this . getHttpOptions ( ) ) ;
20+ return data ;
3121 }
3222
3323 async downloadFile ( url , savePath ) {
34- return new Promise ( ( resolve , reject ) => {
35- const options = {
36- ...this . getHttpOptions ( ) ,
37- url,
38- method : 'GET' ,
39- downloadlocation : savePath ,
40- allowRedirects : true ,
41- } ;
42-
43- request . doRequest ( options , async ( err , res ) => {
44- if ( err ) {
45- return reject ( err ) ;
46- }
47-
48- if ( res . statusCode !== 200 ) {
49- await fs . promises . unlink ( savePath ) ;
50- return reject ( new Error ( `Wrong HTTP status: ${ res . statusCode } ` ) ) ;
51- }
52-
53- resolve ( savePath ) ;
54- } ) ;
24+ const { data : httpRequest } = await axios . get ( url , {
25+ ...this . getHttpOptions ( ) ,
26+ responseType : 'stream' ,
5527 } ) ;
28+ return pipeline ( httpRequest , fs . createWriteStream ( savePath ) ) ;
5629 }
5730
5831 /**
@@ -64,7 +37,7 @@ class HttpClient {
6437 return {
6538 ...options ,
6639 headers : {
67- 'User-Agent' : 'electron-simple-updater' ,
40+ 'User-Agent' : 'electron-simple-updater 1.0 ' ,
6841 ...options . headers ,
6942 } ,
7043 } ;
0 commit comments