// customAxios.js import axios from 'axios'; import Cookies from 'js-cookie'; import cookie from 'cookie'; import getApi from './getAPI'; const isServer = typeof window === 'undefined'; const getSession = (req: any = null) => { if (isServer && req) { // Server-side: parse cookies from the request header const cookies = cookie.parse(req?.headers.cookie || ''); return cookies['ultima-auth-session']; } else { // Client-side: use js-cookie return Cookies.get('ultima-auth-session'); } }; // Create an instance of axios const apiCall = axios.create({ baseURL: getApi() }); // Add a request interceptor to include the headers apiCall.interceptors.request.use( async (config) => { let session; let req; let accessToken; if (isServer) { req = config.params.context ? config.params.context.req : undefined; session = getSession(req); } else { session = getSession(); } if(session && typeof session === 'string') { accessToken = `Bearer ${(JSON.parse(session))?.accessToken}`; } // Add headers config.headers['session'] = session; config.headers['Authorization'] = accessToken; return config; }, error => { // Handle the error return Promise.reject(error); } ); // Export the custom axios instance export default apiCall;