Merge branch 'feat/inda-383-daily-stat' into 'main'
[ProtonMail-WebClient.git] / packages / shared / lib / fetch / headers.ts
blobd4c120d96459c982548c94edf9602500a7305945
1 import type { HumanVerificationMethodType } from '../interfaces';
3 interface Headers {
4     [key: string]: any;
7 interface MergeHeaderArgs {
8     headers?: Headers;
10     [key: string]: any;
13 export const mergeHeaders = ({ headers: configHeaders, ...restConfig }: MergeHeaderArgs, headers: Headers) => ({
14     ...restConfig,
15     headers: {
16         ...configHeaders,
17         ...headers,
18     },
19 });
21 export const getAppVersionStr = (clientID: string, _appVersion: string) => {
22     const appVersion = process.env.NODE_ENV !== 'production' ? `${_appVersion.replace(/-.*/, '')}-dev` : _appVersion;
23     return `${clientID}@${appVersion}`;
26 export const getAppVersionHeader = (appVersion: string) => ({
27     'x-pm-appversion': appVersion,
28 });
30 export const getAppVersionHeaders = (clientID: string, appVersion: string) => {
31     return getAppVersionHeader(getAppVersionStr(clientID, appVersion));
34 export const getUIDHeaderValue = (headers: Headers) => headers?.['x-pm-uid'];
36 export const getUIDHeaders = (UID: string) => ({
37     'x-pm-uid': UID,
38 });
40 export const getAuthHeaders = (UID: string, AccessToken: string) => ({
41     'x-pm-uid': UID,
42     Authorization: `Bearer ${AccessToken}`,
43 });
45 export const getLocaleHeaders = (localeCode: string) => ({
46     'x-pm-locale': localeCode,
47 });
49 export const withAuthHeaders = (UID: string, AccessToken: string, config: any) =>
50     mergeHeaders(config, getAuthHeaders(UID, AccessToken));
52 export const withUIDHeaders = (UID: string, config: any) => mergeHeaders(config, getUIDHeaders(UID));
54 export const withLocaleHeaders = (localeCode: string, config: any) =>
55     mergeHeaders(config, getLocaleHeaders(localeCode));
57 export const getVerificationHeaders = (
58     token: string | undefined,
59     tokenType: HumanVerificationMethodType | undefined
60 ) => {
61     if (!token || !tokenType) {
62         return {};
63     }
64     return {
65         'x-pm-human-verification-token': token,
66         'x-pm-human-verification-token-type': tokenType,
67     };
70 export const getDeviceVerificationHeaders = (challengeB64: string) => {
71     return {
72         'X-PM-DV': challengeB64,
73     };
76 export const getOwnershipVerificationHeaders = (value: 'lax') => {
77     return {
78         'X-PM-OV': value,
79     };
82 export const getCroHeaders = (paymentToken: string | undefined) => {
83     if (!paymentToken) {
84         return {};
85     }
86     return {
87         'x-pm-payment-info-token': paymentToken,
88     };
91 export const withVerificationHeaders = (
92     token: string | undefined,
93     tokenType: HumanVerificationMethodType | undefined,
94     config: any
95 ) => {
96     return mergeHeaders(config, getVerificationHeaders(token, tokenType));