File: //home/arjun/projects/propbase/propbase_website/config/strapiservice.ts
import axios, { AxiosInstance, AxiosResponse, InternalAxiosRequestConfig } from 'axios';
import { strapiApiUrl } from './serviceConstants';
import Notifications from '../shared/utils/notifications';
const reset = (): void => {
localStorage.clear();
sessionStorage.clear();
window.location.href = '/';
};
const apiGateway: AxiosInstance = axios.create({
baseURL: strapiApiUrl,
headers: {
'Content-Type': 'application/json',
},
timeout: 20000,
});
apiGateway.interceptors.response.use(
(response: AxiosResponse) => response,
({ response }) => {
if (response?.data?.statusCode === 400) {
Notifications(response?.data?.message, 'error');
return response;
}
if (response?.data?.statusCode === 401) {
reset();
}
},
);
apiGateway.interceptors.request.use((config: InternalAxiosRequestConfig) => {
const token = process.env.NEXT_PUBLIC_KEY_STRAPI;
config.headers = config.headers || {};
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
});
export default apiGateway;