import axios from 'axios'
export const BASE_HOST = "/"
export const BASE_URI = BASE_HOST + "";

const instance = axios.create({
  baseURL: BASE_URI,
  timeout: 5000,
  method: 'post',
});

export default class FileUpload {
  static fileUpload(url, data = {}, params = {}) {
    return this._base(url, 'post', data, params)
  }

  static fileDownload(url) {
    return this._base(url, "get", {}, "");
  }

  static _base(url, method, data, params, headers = {
    'Content-Type': 'multipart/form-data'
  }) {
    return new Promise((resolve, reject) => {
      axios({
        url: BASE_URI + url,
        method: method,
        data,
        params,
        timeout: 50000,
        headers: headers
      }).then(response => {
        const { data } = response;
        resolve(data)
      })
        .catch(error => {
        });
    });
  }

  static pget(url, data) {
    let token = window.sessionStorage.token
    let userId = window.sessionStorage.userId
    let headers = { userId, token, "terminal": "WEB" };
    if (url != `${BASE_URI}login` && token)
      headers.token = token;
    return new Promise((resolve, reject) => {
      axios.get(url, data, {
        headers,

        timeout: 50000,
      })
        .then(response => {
          const { data } = response;
          resolve(data)
        })
        .catch(error => {
          if (error.response) {
            // The request was made and the server responded with a status code
            // that falls out of the range of 2xx
            console.log(error.response.data);
            console.log(error.response.status);
            console.log(error.response.headers);
            resolve(error.response.status);
          } else if (error.request) {
            // The request was made but no response was received
            // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
            // http.ClientRequest in node.js
            console.log(error.request);
            resolve('error.request');
          } else {
            // Something happened in setting up the request that triggered an Error
            console.log('Error', error.message);
            resolve(error.message);
          }
          console.log(error.config);
        });

    })
  }

  static get(url, data) {
    return this.pget(BASE_HOST + url, data)
  }

  static downloadFile(excelObj, filename) {
    let url = document.createElement('a');
    url.download = filename;
    url.style.display = "none";
    url.href = excelObj;
    document.body.appendChild(url);
    url.click()
    document.body.removeChild(url);
  }
}
