Advertisement
Guest User

Untitled

a guest
Dec 19th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import axios            from 'axios'
  2. import Qs               from 'qs'
  3. import MockAdapter      from 'axios-mock-adapter'
  4. import { createMocks }  from '../mocks'
  5.  
  6. /* eslint-disable-next-line */
  7. export const API_URL = process.env.API_URL
  8. /* eslint-disable-next-line */
  9. export const WITH_MOCKS = process.env.WITH_MOCKS
  10. /* eslint-disable-next-line */
  11. export const MOCK_ROLE = process.env.MOCK_ROLE
  12.  
  13. const AXIOS_TIMEOUT = 2500
  14.  
  15. const axiosInstance = axios.create({
  16.   baseURL: API_URL || 'http://test-mock-server/admin',
  17.   paramsSerializer: function(params) {
  18.     return Qs.stringify(params, {arrayFormat: 'brackets'})
  19.   }
  20. })
  21.  
  22. if (WITH_MOCKS === 'true') {
  23.   createMocks(new MockAdapter(axiosInstance, { delayResponse: 500 }))
  24. }
  25.  
  26. export { axiosInstance }
  27.  
  28. export const requestApi = async (method, url, data, multipart = false, uploadCallback = null, cancelToken = null) => {
  29.   const config = {
  30.     method: method,
  31.     url: url,
  32.     params: {},
  33.     timeout: AXIOS_TIMEOUT,
  34.   }
  35.   if (uploadCallback) {
  36.     config.onUploadProgress = uploadCallback
  37.   }
  38.   if (cancelToken) {
  39.     config.cancelToken = cancelToken
  40.   }
  41.   if (data) {
  42.     switch (method) {
  43.       case 'post':
  44.       case 'put':
  45.       case 'patch':
  46.         config.data = data
  47.         break
  48.       default:
  49.         config.params = {...config.params, ...data}
  50.         break
  51.     }
  52.   }
  53.  
  54.   if (multipart) {
  55.     const formData = new FormData()
  56.     for (const key in data) {
  57.       if (data.hasOwnProperty(key)) {
  58.         formData.append(key, data[key])
  59.       }
  60.     }
  61.     config.headers = {'Content-Type': undefined, enctype: 'multipart/form-data'}
  62.     config.data = formData
  63.   } else if (method !== 'get') {
  64.     config.data = data
  65.   }
  66.  
  67.   try {
  68.     let response = await axiosInstance.request(config)
  69.     return response.data
  70.   } catch (error) {
  71.     //Не авторизован
  72.     if (!axios.isCancel(error) && error.response.status === 403) {
  73.       document.location.reload()
  74.     } else {
  75.       throw (error)
  76.     }
  77.   }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement