datasquirel/utils/functions/parseCookies.js

70 lines
1.8 KiB
JavaScript
Raw Normal View History

2023-08-07 04:10:45 +00:00
// @ts-check
2023-06-24 12:09:26 +00:00
/**
* ==============================================================================
* Imports
* ==============================================================================
*/
2023-08-07 04:10:45 +00:00
const http = require("http");
2023-06-24 12:09:26 +00:00
/**
* Parse request cookies
* ==============================================================================
*
* @description This function takes in a request object and returns the cookies as a JS object
*
* @async
*
* @param {object} params - main params object
2023-08-07 04:10:45 +00:00
* @param {http.IncomingMessage} params.request - HTTPS request object
2023-06-24 12:09:26 +00:00
*
2023-08-07 04:10:45 +00:00
* @returns {* | null}
2023-06-24 12:09:26 +00:00
*/
module.exports = function ({ request }) {
/**
* Check inputs
*
* @description Check inputs
*/
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
2023-08-07 04:10:45 +00:00
/** @type {string | undefined} */
2023-06-24 12:09:26 +00:00
const cookieString = request.headers.cookie;
if (!cookieString || typeof cookieString !== "string") {
return null;
}
/** @type {string[]} */
const cookieSplitArray = cookieString.split(";");
2023-08-07 04:12:14 +00:00
/** @type {*} */
2023-06-24 12:09:26 +00:00
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;
};
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////