Skip to content

Commit c6e6746

Browse files
committed
Type-check httpRequest
1 parent 1769ea4 commit c6e6746

File tree

1 file changed

+24
-20
lines changed

1 file changed

+24
-20
lines changed

src/install.js

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
const crypto = require("crypto");
22
const extract = require("extract-zip");
33
const fs = require("fs-extra");
4+
const http = require("http");
5+
const https = require("https");
46
const path = require("path");
57
const lockfile = require("proper-lockfile");
68
const 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

Comments
 (0)