1
1
const crypto = require ( "crypto" ) ;
2
2
const extract = require ( "extract-zip" ) ;
3
3
const fs = require ( "fs-extra" ) ;
4
+ const http = require ( "http" ) ;
5
+ const https = require ( "https" ) ;
4
6
const path = require ( "path" ) ;
5
7
const lockfile = require ( "proper-lockfile" ) ;
6
8
const os = require ( "os" ) ;
@@ -299,7 +301,7 @@ function downloadFile(url, destinationPath) {
299
301
reject = y ;
300
302
} ) ;
301
303
302
- const request = httpRequest ( url , "GET" , ( response ) => {
304
+ const request = httpRequest ( url , ( response ) => {
303
305
if ( response . statusCode !== 200 ) {
304
306
const error = new Error (
305
307
`Download failed: server returned code ${ response . statusCode } . URL: ${ url } `
@@ -319,31 +321,33 @@ function downloadFile(url, destinationPath) {
319
321
}
320
322
321
323
/**
322
- *
323
- * @param {URL } url
324
- * @param {string } method
325
- * @param {(response: any) => void } response
324
+ * @param {URL|string } urlOrString
325
+ * @param {(response: import('http').IncomingMessage) => void } callback+
326
326
*/
327
- function httpRequest ( url , method , response ) {
328
- /**
329
- * @type {any }
330
- */
331
- let options = URL . parse ( url . toString ( ) ) ;
332
- options . method = method ;
333
-
327
+ function httpRequest ( urlOrString , callback ) {
328
+ const url =
329
+ typeof urlOrString === "string" ? new URL . URL ( urlOrString ) : urlOrString ;
334
330
const requestCallback =
335
331
/**
336
- * @param {any } res
332
+ * @param {import('http').IncomingMessage } response
337
333
*/
338
- ( res ) => {
339
- if ( res . statusCode >= 300 && res . statusCode < 400 && res . headers . location )
340
- httpRequest ( res . headers . location , method , response ) ;
341
- else response ( res ) ;
334
+ ( response ) => {
335
+ console . log ( response . statusCode , urlOrString ) ;
336
+ if (
337
+ response . statusCode !== undefined &&
338
+ response . statusCode >= 300 &&
339
+ response . statusCode < 400 &&
340
+ response . headers . location
341
+ ) {
342
+ httpRequest ( response . headers . location , callback ) ;
343
+ } else {
344
+ callback ( response ) ;
345
+ }
342
346
} ;
343
347
const request =
344
- options . protocol === "https:"
345
- ? require ( " https" ) . request ( options , requestCallback )
346
- : require ( " http" ) . request ( options , requestCallback ) ;
348
+ url . protocol === "https:"
349
+ ? https . request ( url , requestCallback )
350
+ : http . request ( url , requestCallback ) ;
347
351
request . end ( ) ;
348
352
return request ;
349
353
}
0 commit comments