Merge branch 'feat/inda-383-daily-stat' into 'main'
[ProtonMail-WebClient.git] / packages / shared / lib / fetch / serialize.ts
blobaf5f1d9fa7d958d448444910f1eb5416edbf5649
1 export const serializeFormData = (data: { [key: string]: any }): FormData => {
2     const formData = new FormData();
3     Object.keys(data).forEach((key) => {
4         if (Array.isArray(data[key])) {
5             data[key].forEach((val: any) => formData.append(key, val));
6         } else {
7             formData.append(key, data[key]);
8         }
9     });
10     return formData;
13 export type FetchDataType = 'json' | 'form' | 'protobuf';
14 export const serializeData = (data: any, input: FetchDataType): Pick<RequestInit, 'body' | 'headers'> => {
15     if (!data) {
16         return {};
17     }
18     if (input === 'json') {
19         return {
20             body: JSON.stringify(data),
21             headers: {
22                 'content-type': 'application/json',
23             },
24         };
25     }
26     if (input === 'form') {
27         return {
28             body: serializeFormData(data),
29         };
30     }
31     if (input === 'protobuf') {
32         return {
33             body: data,
34             headers: {
35                 'content-type': 'application/x-protobuf',
36             },
37         };
38     }
39     return {};