import axios from 'axios';

const baseURL = import.meta.env.VITE_API_URL ?? '';

function readXsrfToken(): string | undefined {
    const row = document.cookie
        .split('; ')
        .find((r) => r.startsWith('XSRF-TOKEN='));
    if (!row) {
        return undefined;
    }
    const value = row.slice('XSRF-TOKEN='.length);
    try {
        return decodeURIComponent(value);
    } catch {
        return value;
    }
}

const api = axios.create({
    baseURL: baseURL.replace(/\/$/, ''),
    withCredentials: true,
    headers: {
        Accept: 'application/json',
        'X-Requested-With': 'XMLHttpRequest',
    },
});

api.interceptors.request.use((config) => {
    const token = readXsrfToken();
    if (token) {
        config.headers['X-XSRF-TOKEN'] = token;
    }
    return config;
});

export default api;
