From 82e0c6f961301c9241cf2ecacb657dbf53326f4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sarstr=C3=B6m?= Date: Tue, 9 Nov 2021 11:46:45 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20Readded=20mock,=20ts=20co?= =?UTF-8?q?nfig=20to=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../@react-native-cookies/cookies.ts | 0 .../@react-native-cookies/cookies.ts | 81 +++++++++++++++++++ libs/api/tsconfig.json | 1 + 3 files changed, 82 insertions(+) rename libs/{api/lib => api-hjarntorget}/__mocks__/@react-native-cookies/cookies.ts (100%) create mode 100644 libs/api-skolplattformen/__mocks__/@react-native-cookies/cookies.ts diff --git a/libs/api/lib/__mocks__/@react-native-cookies/cookies.ts b/libs/api-hjarntorget/__mocks__/@react-native-cookies/cookies.ts similarity index 100% rename from libs/api/lib/__mocks__/@react-native-cookies/cookies.ts rename to libs/api-hjarntorget/__mocks__/@react-native-cookies/cookies.ts diff --git a/libs/api-skolplattformen/__mocks__/@react-native-cookies/cookies.ts b/libs/api-skolplattformen/__mocks__/@react-native-cookies/cookies.ts new file mode 100644 index 00000000..7ce777bc --- /dev/null +++ b/libs/api-skolplattformen/__mocks__/@react-native-cookies/cookies.ts @@ -0,0 +1,81 @@ +import { CookieJar, Cookie as TCookie } from 'tough-cookie' + +export interface Cookie { + name: string + value: string + path?: string + domain?: string + version?: string + expires?: string + secure?: boolean + httpOnly?: boolean +} + +export interface Cookies { + [key: string]: Cookie +} + +export interface CookieManagerStatic { + set(url: string, cookie: Cookie, useWebKit?: boolean): Promise + setFromResponse(url: string, cookie: string): Promise + + get(url: string, useWebKit?: boolean): Promise + + clearAll(useWebKit?: boolean): Promise +} + +const convertTtoC = (cookie: string | TCookie): Cookie => { + if (typeof cookie === 'string') { + return convertTtoC(TCookie.parse(cookie) as TCookie) + } + return { + name: cookie.key, + value: cookie.value, + domain: cookie.domain || undefined, + expires: + cookie.expires === 'Infinity' ? undefined : cookie.expires.toUTCString(), + httpOnly: cookie.httpOnly || undefined, + path: cookie.path || undefined, + secure: cookie.secure, + } +} +const convertCtoT = (cookie: Cookie): TCookie => + new TCookie({ + key: cookie.name, + value: cookie.value, + domain: cookie.domain, + expires: cookie.expires ? new Date(cookie.expires) : undefined, + httpOnly: cookie.httpOnly || false, + path: cookie.path, + secure: cookie.secure || false, + }) +const convertCookies = (cookies: TCookie[]): Cookies => + cookies.reduce( + (map, cookie) => ({ + ...map, + [cookie.key]: convertTtoC(cookie), + }), + {} as Cookies + ) + +const jar = new CookieJar() +const CookieManager: CookieManagerStatic = { + clearAll: async () => { + await jar.removeAllCookies() + return true + }, + get: async (url) => { + const cookies = await jar.getCookies(url) + return convertCookies(cookies) + }, + set: async (url, cookie) => { + await jar.setCookie(convertCtoT(cookie), url) + return true + }, + setFromResponse: async (url, cookie) => { + await jar.setCookie(cookie, url) + return true + }, +} + +export default CookieManager diff --git a/libs/api/tsconfig.json b/libs/api/tsconfig.json index 42deee98..97842377 100644 --- a/libs/api/tsconfig.json +++ b/libs/api/tsconfig.json @@ -1,4 +1,5 @@ { + "extends": "../../tsconfig.base.json", "compilerOptions": { "target": "ES6", "module": "CommonJS",