Use cookie and set-cookie-parser

This commit is contained in:
MemeCornucopia
2024-01-29 13:43:32 -05:00
parent c8ad3387c5
commit 8b149458e0
3 changed files with 46 additions and 12 deletions

36
package-lock.json generated
View File

@@ -1,26 +1,30 @@
{ {
"name": "@movie-web/providers", "name": "@movie-web/providers",
"version": "2.1.0", "version": "2.1.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@movie-web/providers", "name": "@movie-web/providers",
"version": "2.1.0", "version": "2.1.1",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"cheerio": "^1.0.0-rc.12", "cheerio": "^1.0.0-rc.12",
"cookie": "^0.6.0",
"crypto-js": "^4.1.1", "crypto-js": "^4.1.1",
"form-data": "^4.0.0", "form-data": "^4.0.0",
"iso-639-1": "^3.1.0", "iso-639-1": "^3.1.0",
"nanoid": "^3.3.6", "nanoid": "^3.3.6",
"node-fetch": "^2.7.0", "node-fetch": "^2.7.0",
"set-cookie-parser": "^2.6.0",
"unpacker": "^1.0.1" "unpacker": "^1.0.1"
}, },
"devDependencies": { "devDependencies": {
"@types/cookie": "^0.6.0",
"@types/crypto-js": "^4.1.1", "@types/crypto-js": "^4.1.1",
"@types/node-fetch": "^2.6.6", "@types/node-fetch": "^2.6.6",
"@types/randombytes": "^2.0.1", "@types/randombytes": "^2.0.1",
"@types/set-cookie-parser": "^2.4.7",
"@types/spinnies": "^0.5.1", "@types/spinnies": "^0.5.1",
"@typescript-eslint/eslint-plugin": "^5.60.0", "@typescript-eslint/eslint-plugin": "^5.60.0",
"@typescript-eslint/parser": "^5.60.0", "@typescript-eslint/parser": "^5.60.0",
@@ -687,6 +691,12 @@
"@types/chai": "*" "@types/chai": "*"
} }
}, },
"node_modules/@types/cookie": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
"integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
"dev": true
},
"node_modules/@types/crypto-js": { "node_modules/@types/crypto-js": {
"version": "4.2.1", "version": "4.2.1",
"dev": true, "dev": true,
@@ -751,6 +761,15 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/@types/set-cookie-parser": {
"version": "2.4.7",
"resolved": "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.7.tgz",
"integrity": "sha512-+ge/loa0oTozxip6zmhRIk8Z/boU51wl9Q6QdLZcokIGMzY5lFXYy/x7Htj2HTC6/KZP1hUbZ1ekx8DYXICvWg==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/spinnies": { "node_modules/@types/spinnies": {
"version": "0.5.3", "version": "0.5.3",
"dev": true, "dev": true,
@@ -1764,6 +1783,14 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/cookie": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
"integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/cosmiconfig": { "node_modules/cosmiconfig": {
"version": "8.3.6", "version": "8.3.6",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
@@ -4789,6 +4816,11 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/set-cookie-parser": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz",
"integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ=="
},
"node_modules/set-function-length": { "node_modules/set-function-length": {
"version": "1.1.1", "version": "1.1.1",
"dev": true, "dev": true,

View File

@@ -48,9 +48,11 @@
"prepublishOnly": "npm test && npm run lint" "prepublishOnly": "npm test && npm run lint"
}, },
"devDependencies": { "devDependencies": {
"@types/cookie": "^0.6.0",
"@types/crypto-js": "^4.1.1", "@types/crypto-js": "^4.1.1",
"@types/node-fetch": "^2.6.6", "@types/node-fetch": "^2.6.6",
"@types/randombytes": "^2.0.1", "@types/randombytes": "^2.0.1",
"@types/set-cookie-parser": "^2.4.7",
"@types/spinnies": "^0.5.1", "@types/spinnies": "^0.5.1",
"@typescript-eslint/eslint-plugin": "^5.60.0", "@typescript-eslint/eslint-plugin": "^5.60.0",
"@typescript-eslint/parser": "^5.60.0", "@typescript-eslint/parser": "^5.60.0",
@@ -80,11 +82,13 @@
}, },
"dependencies": { "dependencies": {
"cheerio": "^1.0.0-rc.12", "cheerio": "^1.0.0-rc.12",
"cookie": "^0.6.0",
"crypto-js": "^4.1.1", "crypto-js": "^4.1.1",
"form-data": "^4.0.0", "form-data": "^4.0.0",
"iso-639-1": "^3.1.0", "iso-639-1": "^3.1.0",
"nanoid": "^3.3.6", "nanoid": "^3.3.6",
"node-fetch": "^2.7.0", "node-fetch": "^2.7.0",
"set-cookie-parser": "^2.6.0",
"unpacker": "^1.0.1" "unpacker": "^1.0.1"
} }
} }

View File

@@ -1,3 +1,6 @@
import cookie from 'cookie';
import setCookieParser from 'set-cookie-parser';
export interface Cookie { export interface Cookie {
name: string; name: string;
value: string; value: string;
@@ -5,18 +8,13 @@ export interface Cookie {
export function makeCookieHeader(cookies: Record<string, string>): string { export function makeCookieHeader(cookies: Record<string, string>): string {
return Object.entries(cookies) return Object.entries(cookies)
.map(([name, value]) => `${name}=${value}`) .map(([name, value]) => cookie.serialize(name, value))
.join('; '); .join('; ');
} }
export function parseSetCookie(headerValue: string): Record<string, Cookie> { export function parseSetCookie(headerValue: string): Record<string, Cookie> {
const cookies: Record<string, Cookie> = {}; const parsedCookies = setCookieParser.parse(headerValue, {
const parts = headerValue.split(/; */); map: true,
for (const part of parts) { });
const [name, value] = part.split('='); return parsedCookies;
if (name && value) {
cookies[name] = { name, value };
}
}
return cookies;
} }