11const crypto = require ( "crypto" ) ;
22const extract = require ( "extract-zip" ) ;
33const fs = require ( "fs-extra" ) ;
4+ const http = require ( "http" ) ;
5+ const https = require ( "https" ) ;
46const path = require ( "path" ) ;
57const lockfile = require ( "proper-lockfile" ) ;
68const os = require ( "os" ) ;
@@ -299,7 +301,7 @@ function downloadFile(url, destinationPath) {
299301 reject = y ;
300302 } ) ;
301303
302- const request = httpRequest ( url , "GET" , ( response ) => {
304+ const request = httpRequest ( url , ( response ) => {
303305 if ( response . statusCode !== 200 ) {
304306 const error = new Error (
305307 `Download failed: server returned code ${ response . statusCode } . URL: ${ url } `
@@ -319,31 +321,33 @@ function downloadFile(url, destinationPath) {
319321}
320322
321323/**
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+
326326 */
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 ;
334330 const requestCallback =
335331 /**
336- * @param {any } res
332+ * @param {import('http').IncomingMessage } response
337333 */
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+ }
342346 } ;
343347 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 ) ;
347351 request . end ( ) ;
348352 return request ;
349353}
0 commit comments