Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 7385 | Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
6493 stevensc 1
import Axios from 'axios'
2
 
3
export const cancelToken = Axios.CancelToken.source()
4
 
5
const axios = Axios.create({
6
  baseURL: ''
7
})
8
 
9
axios.get = (_url, params = {}) => {
10
  let url = _url
11
  if (!_url.includes('t=')) {
12
    if (_url.includes('?')) { url += '&' } else { url += '?' }
13
    url += 't=' + new Date().getTime()
14
  }
15
  return Axios.get(url, {
16
    headers: {
17
      Accept: 'application/json',
18
      Vary: 'Accept',
19
      'Cache-Control': 'no-cache, no-store'
20
    },
21
    params
22
  })
23
}
24
 
25
axios.all = Axios.all
26
axios.spread = Axios.spread
27
axios.upload = (url, data) => {
28
  return axios.post(url, new FormData(data), {
29
    headers: {
30
      'Content-Type': 'multipart/form-data'
31
    }
32
  })
33
}
34
 
35
axios.interceptors.request.use(
36
  async (request) => {
37
    if (['post', 'put', 'delete'].includes(request.method)) {
38
      try {
39
        const resp = await axios.get('/csrf')
40
        if (resp.data.success) {
41
          request.headers['X-CSRF-TOKEN'] = resp.data.data
42
 
43
          return request
44
        }
45
      } catch (err) {
46
        throw new Error(`Axios problem with request during pre-flight phase: ${err}.`)
47
      }
48
    }
49
  },
50
  (error) => {
51
    return Promise.reject(error)
52
  }
53
)
54
export default axios