"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = httpsRequest; const https_1 = __importDefault(require("https")); const http_1 = __importDefault(require("http")); const url_1 = require("url"); /** * # Make Https Request */ function httpsRequest({ url, method, hostname, path, headers, body, port, scheme, }) { var _a; const reqPayloadString = body ? JSON.stringify(body) : null; const PARSED_URL = url ? new url_1.URL(url) : null; //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// /** @type {any} */ let requestOptions = { method: method || "GET", hostname: PARSED_URL ? PARSED_URL.hostname : hostname, port: (scheme === null || scheme === void 0 ? void 0 : scheme.match(/https/i)) ? 443 : PARSED_URL ? ((_a = PARSED_URL.protocol) === null || _a === void 0 ? void 0 : _a.match(/https/i)) ? 443 : PARSED_URL.port : port ? Number(port) : 80, headers: {}, }; if (path) requestOptions.path = path; // if (href) requestOptions.href = href; if (headers) requestOptions.headers = headers; if (body) { requestOptions.headers["Content-Type"] = "application/json"; requestOptions.headers["Content-Length"] = reqPayloadString ? Buffer.from(reqPayloadString).length : undefined; } //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// return new Promise((res, rej) => { var _a; const httpsRequest = ((scheme === null || scheme === void 0 ? void 0 : scheme.match(/https/i)) ? https_1.default : ((_a = PARSED_URL === null || PARSED_URL === void 0 ? void 0 : PARSED_URL.protocol) === null || _a === void 0 ? void 0 : _a.match(/https/i)) ? https_1.default : http_1.default).request( /* ====== Request Options object ====== */ requestOptions, //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// /* ====== Callback function ====== */ (response) => { var str = ""; // ## another chunk of data has been received, so append it to `str` response.on("data", function (chunk) { str += chunk; }); // ## the whole response has been received, so we just print it out here response.on("end", function () { res(str); }); response.on("error", (error) => { console.log("HTTP response error =>", error.message); rej(`HTTP response error =>, ${error.message}`); }); response.on("close", () => { console.log("HTTP(S) Response Closed Successfully"); }); }); if (body) httpsRequest.write(reqPayloadString); httpsRequest.on("error", (error) => { console.log("HTTPS request ERROR =>", error.message); rej(`HTTP request error =>, ${error.message}`); }); httpsRequest.end(); }); }