UNPKG

gapp-checkout

Version:

Mobile Gapp flow for Checkout

119 lines (102 loc) 2.72 kB
import axios, { AxiosRequestConfig, Method } from 'axios'; const API_Timeout = 60000; export type RequestProps = { url: string; method: Method; header?: object; requestParams?: object; requestPostData?: object; timeout?: number; //type of project AppKey?: number | string; //token for request bearerToken?: string; cancelRequest?: AbortSignal; tokenType?: string; }; interface AxiosRequestConfigWithMeta extends AxiosRequestConfig { meta?: { [key: string]: any }; } export const httpRequest = ({ url, method, requestParams, requestPostData, cancelRequest, timeout = API_Timeout, bearerToken, tokenType = 'Bearer', header, }: RequestProps) => { return httpRequestWithoutAuthorization({ url, method, requestParams, requestPostData, timeout, cancelRequest, header: { Authorization: `${tokenType} ${bearerToken}`, ...header, }, }); }; export const httpRequestWithoutAuthorization = ({ url, method, requestParams, requestPostData, cancelRequest, timeout = API_Timeout, header, }: RequestProps) => { const instance = axios.create(); instance.interceptors.request.use((config: any) => { config.meta = config.meta || {}; config.meta.requestStartedAt = new Date().getTime(); return config; }); instance.interceptors.response.use( response => { const config: AxiosRequestConfigWithMeta = response.config; if (config.meta !== undefined) { config.meta = config.meta || {}; config.meta.responseTime = new Date().getTime() - config?.meta.requestStartedAt; console.log( `Execution time for: ${config.url} - ${ new Date().getTime() - config?.meta.requestStartedAt } ms` ); } return response; }, response => { const config: AxiosRequestConfigWithMeta = response.config; if (config.meta !== undefined) { config.meta = config.meta || {}; config.meta.responseTime = new Date().getTime() - config?.meta.requestStartedAt; console.warn( `Execution time for: ${config.url} - ${ new Date().getTime() - config.meta.requestStartedAt } ms` ); } throw response; } ); return instance.request({ url: url, method: method, headers: { // Accept: 'application/json', // 'Content-type': 'application/json;charset=utf-8', ...header, }, params: requestParams, data: requestPostData, timeout: timeout, signal: cancelRequest, }); };