-
Notifications
You must be signed in to change notification settings - Fork 4
/
public_api_request.ts
29 lines (25 loc) 路 1.37 KB
/
public_api_request.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
import { baseAxiosRequestInterceptor, baseAxiosRequestErrorInterceptor, baseAxiosResponseInterceptor, baseAxiosResponseErrorInterceptor } from '../../base_axios_config'
import axios, { AxiosInstance, AxiosRequestConfig } from 'axios'
import debugHelper from '../../util/debug_helper'
import { krakenAxiosConfig } from '../../kraken/kraken_axios_config'
import { PublicEndpoint } from '../types/kraken_api_endpoints'
const { logError, debug } = debugHelper(__filename)
const publicApiClient: AxiosInstance = axios.create(krakenAxiosConfig)
publicApiClient.defaults.baseURL = `${publicApiClient.defaults.baseURL}/public`
publicApiClient.interceptors.request.use(baseAxiosRequestInterceptor, baseAxiosRequestErrorInterceptor)
publicApiClient.interceptors.response.use(baseAxiosResponseInterceptor, baseAxiosResponseErrorInterceptor)
export interface KrakenPublicRequestConfig extends AxiosRequestConfig {
method?: 'POST' | 'post';
url: PublicEndpoint;
data?: any;
}
export const krakenPublicApiRequest = async ({ url, data }: KrakenPublicRequestConfig): Promise<any> => {
const { data: { result: krakenPublicResponse, error }} = await publicApiClient.request({ url, data }) || {}
if (error?.length) {
const errorStr = error.join(' | ')
logError(errorStr)
throw new Error(errorStr)
}
debug({ krakenPublicResponse })
return krakenPublicResponse
}