datasquirel/dist/package-shared/functions/backend/httpRequest.js
Benjamin Toby a3561da53d Updates
2025-01-10 20:35:05 +01:00

86 lines
3.3 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = httpRequest;
const node_http_1 = __importDefault(require("node:http"));
const node_https_1 = __importDefault(require("node:https"));
const querystring_1 = __importDefault(require("querystring"));
const serialize_query_1 = __importDefault(require("../../utils/serialize-query"));
/**
* # Generate a http Request
*/
function httpRequest(params) {
return new Promise((resolve, reject) => {
const isUrlEncodedFormBody = params.urlEncodedFormBody;
const reqPayloadString = params.body
? isUrlEncodedFormBody
? querystring_1.default.stringify(params.body)
: JSON.stringify(params.body).replace(/\n|\r|\n\r/gm, "")
: undefined;
const reqQueryString = params.query
? (0, serialize_query_1.default)(params.query)
: undefined;
const paramScheme = params.scheme;
const finalScheme = paramScheme == "http" ? node_http_1.default : node_https_1.default;
const finalPath = params.path
? params.path + (reqQueryString ? reqQueryString : "")
: undefined;
delete params.body;
delete params.scheme;
delete params.query;
delete params.urlEncodedFormBody;
/** @type {import("node:https").RequestOptions} */
const requestOptions = Object.assign(Object.assign({}, params), { headers: Object.assign({ "Content-Type": isUrlEncodedFormBody
? "application/x-www-form-urlencoded"
: "application/json", "Content-Length": reqPayloadString
? Buffer.from(reqPayloadString).length
: undefined }, params.headers), port: paramScheme == "https" ? 443 : params.port, path: finalPath });
const httpsRequest = finalScheme.request(requestOptions,
/**
* Callback Function
*
* @description https request callback
*/
(response) => {
var str = "";
response.on("data", function (chunk) {
str += chunk;
});
response.on("end", function () {
const data = (() => {
try {
const jsonObj = JSON.parse(str);
return jsonObj;
}
catch (error) {
return undefined;
}
})();
resolve({
status: response.statusCode || 404,
data,
str,
requestedPath: finalPath,
});
});
response.on("error", (err) => {
resolve({
status: response.statusCode || 404,
str,
error: err.message,
requestedPath: finalPath,
});
});
});
if (reqPayloadString) {
httpsRequest.write(reqPayloadString);
}
httpsRequest.on("error", (error) => {
console.log("HTTPS request ERROR =>", error);
});
httpsRequest.end();
});
}