// https://github.com/wendux/fly
const fly=require("flyio")
let csrfToken="1234";
//配置请求基地址
fly.config.baseURL=""
//添加请求拦截器
fly.interceptors.request.use(function (request:any):any {
  // log(`发起请求：path:${request.url}，baseURL:${request.baseURL}`)
  if (!csrfToken) {
    // log("没有token，先请求token...");
    //锁定当天实例，后续请求会在拦截器外排队
    fly.lock();
    return fly.get("/token").then((d: any) => {
      request.headers["csrfToken"] = csrfToken = d.data.data.token;
      // log("token请求成功，值为: " + d.data.data.token);
      // log(`继续完成请求：path:${request.url}，baseURL:${request.baseURL}`)
      return request; //只有最终返回request对象时，原来的请求才会继续
    }).finally(()=>{
      //fly.clear(); //clear the request queue
      fly.unlock();//解锁后，会继续发起请求队列中的任务
    }) 
  } else {
    request.headers["csrfToken"] = csrfToken;
    //可以显式返回request, 也可以不返回，没有返回值时拦截器中默认返回request
    return request;
  }
})
//添加响应拦截器，响应拦截器会在then/catch处理之前执行
fly.interceptors.response.use(
    (response:any) => {
        //只将请求结果的data字段返回
        return response.data
    },
    () => {
        //发生网络错误后会走到这里
        //return Promise.resolve("ssss")
    }
)
export default fly
