cea-core
Version:
basic cea api
52 lines (51 loc) • 1.31 kB
JavaScript
export function cookieParse(host, headers) {
const rawCookies = headers.raw()["set-cookie"];
const map = new Map();
if (!rawCookies) {
return map;
}
let [lastIdxMark, kv] = ["", new Map()];
for (const e of rawCookies) {
const [keyVal, ...optionals] = e.split("; ");
if (!keyVal) {
continue;
}
const [key, val] = keyVal.split("=");
const domainVal = optionals.find((e2) => e2.includes("Domain"));
if (domainVal) {
const [_, domain] = domainVal.split("=");
map.set(domain, new Map([[key, val]]));
}
const mapIdx = host;
if (lastIdxMark !== mapIdx) {
if (lastIdxMark) {
map.set(lastIdxMark, kv);
kv = new Map();
}
}
lastIdxMark = mapIdx;
kv.set(key, val);
}
if (kv.size) {
map.set(lastIdxMark, kv);
}
return map;
}
export function cookieStr(host, cookieMap) {
let str = "";
const mapIdx = host;
const cookie = cookieMap.get(mapIdx);
const rootCookie = cookieMap.get(mapIdx.replace(/\w+\./, ""));
if (cookie) {
for (const [key, value] of cookie.entries()) {
str += `${key}=${value}; `;
}
}
if (rootCookie) {
for (const [key, value] of rootCookie.entries()) {
str += `${key}=${value}; `;
}
}
return str;
}
//# sourceMappingURL=cookie-helper.js.map