import axios from 'axios';
import adapter from "axios-miniprogram-adapter";

// 创建axios实例
const request = axios.create({
    // #ifdef H5
    // baseURL: "/devHost",
    baseURL: "http://127.0.0.1:30001",
    // #endif

    // #ifdef APP-PLUS
    // baseURL: 'https://www.b-beng.com',
    adapter: adapter,
    // #endif

    // #ifdef MP-WEIXIN
    adapter: adapter,
    // #endif
});

// 解决UNI-app上adapter is not a function问题
// axios.defaults.adapter = function (config) {
//     return new Promise((resolve, reject) => {
//         console.log(config)
//         var settle = require('axios/lib/core/settle');
//         var buildURL = require('axios/lib/helpers/buildURL');
//         uni.request({
//             method: config.method.toUpperCase(),
//             url: config.baseURL + buildURL(config.url, config.params, config.paramsSerializer),
//             header: config.headers,
//             data: config.data,
//             dataType: config.dataType,
//             responseType: config.responseType,
//             sslVerify: config.sslVerify,
//             complete: function complete(response) {
//                 response = {
//                     data: response.data,
//                     status: response.statusCode,
//                     errMsg: response.errMsg,
//                     header: response.header,
//                     config: config
//                 };

//                 settle(resolve, reject, response);
//             }
//         })
//     })
// }


// 请求拦截
request.interceptors.request.use(
    config => {
        //授权登录接口返回
        let token = uni.getStorageSync("token");
        if (token) {
            config.headers['token'] = token;
        }
        return config;
    },
    error => {
        return Promise.reject(error)
    }
)

request.interceptors.response.use(res => {
    console.log("axios响应拦截器")
    // 未设置状态码则默认成功状态
    const code = res.data.code
    // 获取错误信息
    const msg = res.data.msg
    // 二进制数据则直接返回
    // if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
    // 	return res.data
    // }
    if (code === 0) {
        return res.data
    } else {
        if (code === 102) {
            uni.clearStorageSync();
            uni.reLaunch({
                url: "/pages/login/login",
            });
        }
        if (code != 3402) {
            uni.showToast({
                title: msg,
                icon: "none",
            });
        }
        return Promise.reject('error');
    }
},
    error => {
        console.log('err' + error)
        let {
            message
        } = error
        if (message == 'Network Error') {
            message = '后端接口连接异常'
        } else if (message.includes('timeout')) {
            message = '系统接口请求超时'
        } else if (message.includes('Request failed with status code')) {
            message = '系统接口' + message.substr(message.length - 3) + '异常'
        }


        uni.showToast({
            title: message,
            icon: "none",
        });


        return Promise.reject(error)
    }
)

// 把对象暴露出去
export default request