This commit is contained in:
Benjamin Toby
2024-12-13 14:01:55 +01:00
parent 6be3ede31a
commit 357365a1ba
5 changed files with 48 additions and 46 deletions
+3 -2
View File
@@ -1,9 +1,10 @@
declare function _exports({ request }: {
declare function _exports({ request, cookieString }: {
request?: http.IncomingMessage & {
[x: string]: any;
};
cookieString?: string;
}): {
[x: string]: any;
[x: string]: string;
};
export = _exports;
import http = require("http");
+39 -37
View File
@@ -1,56 +1,58 @@
// @ts-check
/**
* ==============================================================================
* Imports
* ==============================================================================
*/
const http = require("http");
/**
* Parse request cookies
* ==============================================================================
* ===================================================
*
* @description This function takes in a request object and returns the cookies as a JS object
* @description This function takes in a request object and
* returns the cookies as a JS object
*
* @async
*
* @param {object} params - main params object
* @param {http.IncomingMessage & Object<string, any>} [params.request] - HTTPS request object
* @param {string} [params.cookieString]
*
* @returns {Object<string, any>}
* @returns {Object<string, string>}
*/
module.exports = function ({ request }) {
if (!request) return {};
module.exports = function ({ request, cookieString }) {
try {
/** @type {string | undefined} */
const cookieStr = request
? request.headers.cookie
: cookieString
? cookieString
: undefined;
/** @type {string | undefined} */
const cookieString = request.headers.cookie;
if (!cookieStr) return {};
if (!cookieStr || typeof cookieStr !== "string") {
return {};
}
/** @type {string[]} */
const cookieSplitArray = cookieStr.split(";");
/** @type {Object<string, string>} */
let cookieObject = {};
cookieSplitArray.forEach((keyValueString) => {
const [key, value] = keyValueString.split("=");
if (key && typeof key == "string") {
const parsedKey = key.replace(/^ +| +$/, "");
cookieObject[parsedKey] =
value && typeof value == "string"
? value.replace(/^ +| +$/, "")
: "";
}
});
return cookieObject;
} catch (/** @type {any} */ error) {
console.log(`ERROR parsing cookies: ${error.message}`);
if (!cookieString || typeof cookieString !== "string") {
return {};
}
/** @type {string[]} */
const cookieSplitArray = cookieString.split(";");
/** @type {*} */
let cookieObject = {};
cookieSplitArray.forEach((keyValueString) => {
const [key, value] = keyValueString.split("=");
if (key && typeof key == "string") {
cookieObject[key.replace(/^ +| +$/, "")] =
value && typeof value == "string"
? value.replace(/^ +| +$/, "")
: null;
}
});
/**
* Make https request
*
* @description make a request to datasquirel.com
*/
return cookieObject;
};