Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
BitgetLimited
GitHub Repository: BitgetLimited/V3-bitget-api-sdk
Path: blob/master/bitget-node-sdk-api/src/lib/BaseApi.ts
732 views
1
import getSigner, {BitgetApiHeader, toJsonString, sortByKey} from './util';
2
import {API_CONFIG} from './config';
3
import axios, {AxiosInstance, AxiosRequestConfig} from 'axios';
4
import * as Console from 'console';
5
6
export class BaseApi{
7
protected signer: (
8
httpMethod: string,
9
url: string,
10
qsOrBody: NodeJS.Dict<any> | null,
11
locale?: string
12
) => BitgetApiHeader
13
14
15
constructor(
16
apiKey: string,
17
secretKey: string,
18
passphrase: string,
19
httpConfig: AxiosRequestConfig = {timeout: 3000}
20
) {
21
this.axiosInstance = axios.create({
22
baseURL: API_CONFIG.API_URL,
23
...httpConfig
24
})
25
this.axiosInstance.interceptors.request.use((data) => {
26
if(data.data){
27
data.data = toJsonString(data.data);
28
}
29
if(data.params){
30
data.params = sortByKey(data.params)
31
// Console.log('sort_params:', data.params)
32
}
33
Console.log('request:',data.data || data.params)
34
return data;
35
})
36
37
this.axiosInstance.interceptors.response.use(
38
(data) => {
39
return data.data;
40
},
41
(err) => {
42
// Console.error(err.response.data)
43
// throw err.response.data
44
return err.response.data;
45
}
46
)
47
this.signer = getSigner(apiKey, secretKey ,passphrase)
48
}
49
50
axiosInstance: AxiosInstance
51
}
52