UNPKG

vdi-axios

Version:
50 lines (47 loc) 1.36 kB
import { Many } from "@wendellhu/redi"; import { HTTP_CLIENT_INTERCEPTORS } from "./axiosToken"; import { AxiosClient, HttpClientInterceptor, HttpResponse } from "./type"; export class CreateHttpInterceptor { constructor( @Many(HTTP_CLIENT_INTERCEPTORS) private interceptors: HttpClientInterceptor[] ) {} register(httpClientInterceptors: AxiosClient["interceptors"]) { const defaultError = (error: any) => { console.error(error); return Promise.reject(error); }; this.interceptors.forEach((interceptor) => { httpClientInterceptors.request.use( (...args) => { return interceptor.request(...args); }, (error) => { if (interceptor.requestError) { return interceptor.requestError(error); } return defaultError(error); } ); httpClientInterceptors.response.use( (...args) => { return interceptor.response(...args); }, (error) => { if (interceptor.responseError) { return interceptor.responseError(error); } return defaultError(error); } ); }); } } export class NoopInterceptor implements HttpClientInterceptor { request(request: any) { return request; } response(response: HttpResponse) { return response; } }