-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathhttpRequest.ts
113 lines (109 loc) · 2.89 KB
/
httpRequest.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
const getHttpRequestFile = () => `/**
* AUTO_GENERATED Do not change this file directly, use config.ts file instead
*
* @version ${require("../../../package.json").version.split(".")[0]}
*/
import axios, { AxiosRequestConfig, CancelToken } from "axios";
import { getAxiosInstance, Security, SwaggerResponse } from "./config";
/**
* Cancellation handled here, you can cancel request by call promise.cancel()
*
* @example
* const promise = getUsers();
* setTimeout(() => promise.cancel(), 30000);
* const { data } = await promise;
*
* @param getPromise
* @returns
*/
function cancellation<T>(
getPromise: (cancelToken: CancelToken) => Promise<T>,
): Promise<T> {
const source = axios.CancelToken.source();
const promise = getPromise(source.token);
//@ts-ignore
promise.cancel = () => {
source.cancel("request canceled");
};
return promise;
}
export const Http = {
getRequest(
url: string,
queryParams: any | undefined,
//@ts-ignore
_requestBody: undefined,
security: Security,
configOverride?: AxiosRequestConfig,
): Promise<SwaggerResponse<any>> {
return cancellation((cancelToken) =>
getAxiosInstance(security).get(url, {
cancelToken,
params: queryParams,
...configOverride,
}),
);
},
postRequest(
url: string,
queryParams: any | undefined,
requestBody: any | undefined,
security: Security,
configOverride?: AxiosRequestConfig,
): Promise<SwaggerResponse<any>> {
return cancellation((cancelToken) =>
getAxiosInstance(security).post(url, requestBody, {
cancelToken,
params: queryParams,
...configOverride,
}),
);
},
putRequest(
url: string,
queryParams: any | undefined,
requestBody: any | undefined,
security: Security,
configOverride?: AxiosRequestConfig,
): Promise<SwaggerResponse<any>> {
return cancellation((cancelToken) =>
getAxiosInstance(security).put(url, requestBody, {
cancelToken,
params: queryParams,
...configOverride,
}),
);
},
patchRequest(
url: string,
queryParams: any | undefined,
requestBody: any | undefined,
security: Security,
configOverride?: AxiosRequestConfig,
): Promise<SwaggerResponse<any>> {
return cancellation((cancelToken) =>
getAxiosInstance(security).patch(url, requestBody, {
cancelToken,
params: queryParams,
...configOverride,
}),
);
},
deleteRequest(
url: string,
queryParams: any | undefined,
requestBody: any | undefined,
security: Security,
configOverride?: AxiosRequestConfig,
): Promise<SwaggerResponse<any>> {
return cancellation((cancelToken) =>
getAxiosInstance(security).delete(url, {
data: requestBody,
cancelToken,
params: queryParams,
...configOverride,
}),
);
},
};`;
export default getHttpRequestFile;