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

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

export function axiosHttp(store) {

  service.interceptors.request.use(config => {
    if (typeof window === 'undefined') {
      config.headers.cookie = store.state.option.cookies + '; ' + 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
  return service

}

export default function ({ isServer, store, req }) {
  axiosHttp(store)
}

