Timo Hocker
3aaaf10fd9
All checks were successful
continuous-integration/drone/push Build is passing
36 lines
812 B
TypeScript
36 lines
812 B
TypeScript
import { run_regex } from '@sapphirecode/utilities';
|
|
import { debug } from './debug';
|
|
|
|
const logger = debug ('cookies');
|
|
|
|
function build_cookie (name: string, value: string): string {
|
|
return `${name}=${value}; Secure; HttpOnly; SameSite=Strict`;
|
|
}
|
|
|
|
function extract_cookie (
|
|
name: string|undefined,
|
|
header: string|undefined
|
|
): string| null {
|
|
logger (`extracting cookie ${name}`);
|
|
|
|
const cookie_regex = /(?:^|;)\s*(?<name>[^;=]+)=(?<value>[^;]+)/gu;
|
|
|
|
let result = null;
|
|
|
|
run_regex (
|
|
cookie_regex,
|
|
header,
|
|
(res: RegExpMatchArray) => {
|
|
logger ('parsing cookie %s', res.groups?.name);
|
|
if (res.groups?.name === name) {
|
|
logger ('found cookie');
|
|
result = res.groups?.value as string;
|
|
}
|
|
}
|
|
);
|
|
|
|
return result;
|
|
}
|
|
|
|
export { build_cookie, extract_cookie };
|