|
1 | 1 | import { Method, HeadersMap, Response } from './types'; |
2 | 2 | import createRequest from './createRequest'; |
3 | 3 |
|
| 4 | +const withAccessToken = (headers: HeadersMap = {}, accessToken: string): HeadersMap => ({ |
| 5 | + ...headers, |
| 6 | + 'x-access-token': accessToken, |
| 7 | +}); |
| 8 | + |
| 9 | +interface Params { |
| 10 | + accessToken: string; |
| 11 | + headers?: HeadersMap; |
| 12 | + query?: object; |
| 13 | +} |
| 14 | + |
| 15 | +interface ParamsWithPayload extends Params { |
| 16 | + payload?: object; |
| 17 | +} |
| 18 | + |
4 | 19 | const Api = { |
5 | | - get: <P = any>( |
6 | | - url: string, |
7 | | - { query, headers }: { headers?: HeadersMap; query?: object } = {}, |
8 | | - ): Promise<Response<P>> => |
| 20 | + get: <P = any>(url: string, { accessToken, headers, query }: Params): Promise<Response<P>> => |
9 | 21 | createRequest(url, { |
| 22 | + headers: withAccessToken(headers, accessToken), |
10 | 23 | method: Method.GET, |
11 | | - headers, |
12 | 24 | query, |
13 | 25 | }), |
14 | 26 |
|
15 | 27 | post: <P = any>( |
16 | 28 | url: string, |
17 | | - { |
18 | | - headers, |
19 | | - query, |
20 | | - payload, |
21 | | - }: { headers?: HeadersMap; query?: object; payload?: object } = {}, |
| 29 | + { accessToken, headers, payload, query }: ParamsWithPayload, |
22 | 30 | ): Promise<Response<P>> => |
23 | 31 | createRequest(url, { |
| 32 | + headers: withAccessToken(headers, accessToken), |
24 | 33 | method: Method.POST, |
25 | | - headers, |
26 | | - query, |
27 | 34 | payload, |
| 35 | + query, |
28 | 36 | }), |
29 | 37 |
|
30 | 38 | put: <P = any>( |
31 | 39 | url: string, |
32 | | - { |
33 | | - headers, |
34 | | - query, |
35 | | - payload, |
36 | | - }: { headers?: HeadersMap; query?: object; payload?: object } = {}, |
| 40 | + { accessToken, headers, payload, query }: ParamsWithPayload, |
37 | 41 | ): Promise<Response<P>> => |
38 | 42 | createRequest(url, { |
| 43 | + headers: withAccessToken(headers, accessToken), |
39 | 44 | method: Method.PUT, |
40 | | - headers, |
41 | | - query, |
42 | 45 | payload, |
| 46 | + query, |
43 | 47 | }), |
44 | 48 |
|
45 | 49 | patch: <P = any>( |
46 | 50 | url: string, |
47 | | - { |
48 | | - headers, |
49 | | - query, |
50 | | - payload, |
51 | | - }: { headers?: HeadersMap; query?: object; payload?: object } = {}, |
| 51 | + { accessToken, headers, payload, query }: ParamsWithPayload, |
52 | 52 | ): Promise<Response<P>> => |
53 | 53 | createRequest(url, { |
| 54 | + headers: withAccessToken(headers, accessToken), |
54 | 55 | method: Method.PATCH, |
55 | | - headers, |
56 | | - query, |
57 | 56 | payload, |
| 57 | + query, |
58 | 58 | }), |
59 | 59 |
|
60 | 60 | delete: <P = any>( |
61 | 61 | url: string, |
62 | | - { |
63 | | - headers, |
64 | | - query, |
65 | | - payload, |
66 | | - }: { headers?: HeadersMap; query?: object; payload?: object } = {}, |
| 62 | + { accessToken, headers, payload, query }: ParamsWithPayload, |
67 | 63 | ): Promise<Response<P>> => |
68 | 64 | createRequest(url, { |
| 65 | + headers: withAccessToken(headers, accessToken), |
69 | 66 | method: Method.DELETE, |
70 | | - headers, |
71 | | - query, |
72 | 67 | payload, |
| 68 | + query, |
73 | 69 | }), |
74 | 70 | }; |
75 | 71 |
|
|
0 commit comments