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(";");
|
|
|
|
|
|
|
|
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;
|
|
|
|
};
|
|
|
|
|
|
|
|
////////////////////////////////////////
|
|
|
|
////////////////////////////////////////
|
|
|
|
////////////////////////////////////////
|