interceptor.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import type { AxiosInstance, AxiosResponse } from 'axios';
  2. import type {
  3. RequestInterceptorConfig,
  4. ResponseInterceptorConfig,
  5. } from '../types';
  6. const defaultRequestInterceptorConfig: RequestInterceptorConfig = {
  7. fulfilled: (response) => response,
  8. rejected: (error) => Promise.reject(error),
  9. };
  10. const defaultResponseInterceptorConfig: ResponseInterceptorConfig = {
  11. fulfilled: (response: AxiosResponse) => response,
  12. rejected: (error) => Promise.reject(error),
  13. };
  14. class InterceptorManager {
  15. private axiosInstance: AxiosInstance;
  16. constructor(instance: AxiosInstance) {
  17. this.axiosInstance = instance;
  18. }
  19. addRequestInterceptor({
  20. fulfilled,
  21. rejected,
  22. }: RequestInterceptorConfig = defaultRequestInterceptorConfig) {
  23. this.axiosInstance.interceptors.request.use(fulfilled, rejected);
  24. }
  25. addResponseInterceptor<T = any>({
  26. fulfilled,
  27. rejected,
  28. }: ResponseInterceptorConfig<T> = defaultResponseInterceptorConfig) {
  29. this.axiosInstance.interceptors.response.use(fulfilled, rejected);
  30. }
  31. }
  32. export { InterceptorManager };