All files / src/http interceptor.ts

100% Statements 8/8
100% Branches 0/0
100% Functions 6/6
100% Lines 8/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 6023x           23x             1x                 1x                 1x                 1x               1x               1x      
import axios from 'axios';
import { IAxiosConfig, IHttpError, IHttpResponse } from './interfaces';
 
/**
 * Class used to create interceptors in Axios requests and responses
 */
export class Interceptor {
	/**
	 * Adds a new success request interceptor
	 * @param callback Method that will be executed
	 * @returns Interceptor id
	 */
	public static addRequestSuccess(callback: (config: IAxiosConfig) => IAxiosConfig) {
		return axios.interceptors.request.use(callback);
	}
 
	/**
	 * Adds a new fail request interceptor
	 * @param callback Method that will be executed
	 * @returns Interceptor id
	 */
	public static addRequestFail(callback: (error: any) => any) {
		return axios.interceptors.request.use(undefined, callback);
	}
 
	/**
	 * Adds a new success response interceptor
	 * @param callback Method that will be executed
	 * @returns Interceptor id
	 */
	public static addResponseSuccess(callback: (response: IHttpResponse<any>) => IHttpResponse<any>) {
		return axios.interceptors.response.use(callback);
	}
 
	/**
	 * Adds a new fail response interceptor
	 * @param callback Method that will be executed
	 * @returns Interceptor id
	 */
	public static addResponseFail(callback: (error: IHttpError) => Promise<IHttpError | IHttpResponse<any>>) {
		return axios.interceptors.response.use(undefined, callback);
	}
 
	/**
	 * Removes a request interceptor
	 * @param id Interceptor id
	 */
	public static removeRequestInterceptor(id: number) {
		axios.interceptors.request.eject(id);
	}
 
	/**
	 * Removes a response interceptor
	 * @param id Interceptor id
	 */
	public static removeResponseInterceptor(id: number) {
		axios.interceptors.response.eject(id);
	}
}