import axios from 'axios';

// 创建一个Axios实例，并配置基础URL和请求超时时间
const service = axios.create({
  baseURL: 'http://192.168.7.3:18080', // 设置基础URL
  timeout: 60000, // 设置请求超时时间（单位为毫秒）
  // withCredentials: true, // 如果需要发送跨域请求时携带凭证（如Cookies），可以取消注释此行
});
// service.defaults.withCredentials = true;
// 请求拦截器
service.interceptors.request.use(
    (config) => {
        // 在发送请求之前做些什么，例如添加token到headers
        // config.headers['cookie'] = 'authjs.csrf-token=024846fb3c7ff4d8baffaf9de069396e72ab6c439fb44ce126830edee05d2e88%7Ccc355f6cf425ed6dc60262ef653a29adb8c2a05aba34ddf4a2c1c4dfa59d5613; authjs.callback-url=http%3A%2F%2F192.168.15.199%3A3210%2Fchat%3Fsession%3Dinbox%26topic%3Dtpc_nBRvJCjmn1as; LOBE_LOCALE=zh-CN; LOBE_THEME_PRIMARY_COLOR=undefined; LOBE_THEME_NEUTRAL_COLOR=undefined; authjs.session-token=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwia2lkIjoiY3FXQ2gyUDdpSVZEdkFQZEtHQU55d0JJdmFaMDhGVzJfV1pBelQxYjVoV0oyRjRubDF1LWFJdllYeHkxMW4zZU1kdjVrMlAxWFRwQWdfZl9SdDU2Q2cifQ..wduWoP240CT_p3rOpF3vWg.do7yfgOkk8YMgwApJ1C2-rkBVPh9x00dXBNe-SMhhTj5NH5EEfwEYQiqHb3ZJwnSdT_L6d_GnY42NvgS6E1yTmi54gCdxabms-Eemy75IB_UCDcQjak7e4hSRFdAbH8AjA0MeS6fpJcFJlkWwniZf9kWZsuvy-m702_4SsP8E9E5b_X-9EIX85cDhRFjUC6cNdpNcwY98CvlhI7X-PMh20unkhSRiKCLJOaEKIZeJg_REGezxGcz3NrIE30fI3KB0T5tHetKYO_6BYJ5KCWgiaKHebgxSA21KTXeggpv0Q-UBS5yOmys32Ra2NwFroyahJ9VC0Z3cQiZegb7GXIjkg.UfjoEB1hV-NjULY12ZqZp_hLeInM4LCUHhUNyeqygws';
        config.headers['x-lobe-chat-auth'] = 'http_nosafe.eyJhY2Nlc3NDb2RlIjoiIiwidXNlcklkIjoiZmQ4YWUzNTktNjRkYy00YTU3LWFiNDEtNTQzOGUyZmRhOTc1In0=';
        return config;
    },
    (error) => {
        // 对请求错误做些什么
        console.log(error); // for debug
        return Promise.reject(error);
    }
);

// 响应拦截器
service.interceptors.response.use(
    (response) => {
        // 对响应数据做点什么，例如根据状态码判断成功或失败
        const res = response.data;
        if (response.status === 200) {
            return res;
        } else {
            return Promise.reject(res);
        }
    },
    (error) => {
        // 对响应错误做点什么
        /***** 接收到异常响应的处理开始 *****/
        if (error && error.response) {
            // 1.公共错误处理
            // 2.根据响应码具体处理
            switch (error.response.status) {
                case 400:
                    error.message = "错误请求";
                    break;
                case 401:
                    error.message = "错误请求";
                    break;
                case 423:
                    // token刷新失效
                    error.message = error.response.data + "请重新登录";
                    break;
                case 403:
                    error.message = "拒绝访问";
                    break;
                case 404:
                    error.message = "请求错误,未找到该资源";
                    break;
                case 405:
                    error.message = "请求方法未允许";
                    break;
                case 408:
                    error.message = "请求超时";
                    break;
                case 500:
                    error.message = "服务器端出错";
                    break;
                case 501:
                    error.message = "网络未实现";
                    break;
                case 502:
                    error.message = "网络错误";
                    break;
                case 503:
                    error.message = "服务不可用";
                    break;
                case 504:
                    error.message = "网络超时";
                    break;
                case 505:
                    error.message = "http版本不支持该请求";
                    break;
                default:
                    error.message = `连接错误${error.response.status}`;
            }
        } else {
            error.message = "连接服务器失败";
        }
        /***** 处理结束 *****/
        //如果不需要错误处理，以上的处理过程都可省略
        return Promise.reject(error.response);
    }
);

export default service;
