import Vue from 'vue'
import axios from 'axios'

// const store = required('../store')

const service = axios.create({
  withCredentials: true,
  baseUrl: '/'
})

service.interceptors.request.use(config => {
  // console.log(config)
  // console.log(typeof window)
  // is server render, use ${baseUrl} directly rather than ${proxyUrl}
  if (typeof window === 'undefined') {
    config.url = process.env.baseUrl + config.url
    // config.headers.cookie = Vue.$store.state.option.cookies + '; ' + Vue.$store.state.option.sessionId
    // config.headers['User-Agent'] = Vue.$store.state.option.userAgent
    // config.url = process.env.baseUrl + config.url
  } else {
    // console.log(store)
  }
  return config
}, error => {
  return Promise.reject(error)
})

service.interceptors.response.use(response => {
  const cookies = response.headers['set-cookie']
  if (cookies && cookies.length) {
    for (let i = 0; i < cookies.length; i++) {
      if (cookies[i].indexOf('JSESSIONID') > -1) {
        const sessionId = cookies[i]
        const first = sessionId.indexOf(';')
        const second = sessionId.lastIndexOf(';')
        const newSessionId = sessionId.replace(sessionId.substring(first, second), '')
        store.commit('option/SET_SESSION_ID', newSessionId)
        break
      }
    }
  }
  return response
}, error => {
  return Promise.reject(error)
})

Vue.prototype.$http = service
export default service
