| import Axios from 'axios'; | 
 | import router from '../router'; | 
 | import store from '@/store'; | 
 |  | 
 | const api = Axios.create({ | 
 |   withCredentials: true | 
 | }); | 
 |  | 
 | api.interceptors.response.use(undefined, error => { | 
 |   let response = error.response; | 
 |  | 
 |   // TODO: Provide user with a notification and way to keep system active | 
 |   if (response.status == 401) { | 
 |     if (response.config.url != '/login') { | 
 |       window.location = '/login'; | 
 |       // Commit logout to remove XSRF-TOKEN cookie | 
 |       store.commit('authentication/logout'); | 
 |     } | 
 |   } | 
 |  | 
 |   if (response.status == 403) { | 
 |     if (router.history.current.name === 'unauthorized') { | 
 |       // Check if current router location is unauthorized | 
 |       // to avoid NavigationDuplicated errors. | 
 |       // The router throws an error if trying to push to the | 
 |       // same/current router location. | 
 |       return; | 
 |     } | 
 |     router.push({ name: 'unauthorized' }); | 
 |   } | 
 |  | 
 |   return Promise.reject(error); | 
 | }); | 
 |  | 
 | export default { | 
 |   get(path) { | 
 |     return api.get(path); | 
 |   }, | 
 |   delete(path, payload) { | 
 |     return api.delete(path, payload); | 
 |   }, | 
 |   post(path, payload, config) { | 
 |     return api.post(path, payload, config); | 
 |   }, | 
 |   patch(path, payload) { | 
 |     return api.patch(path, payload); | 
 |   }, | 
 |   put(path, payload) { | 
 |     return api.put(path, payload); | 
 |   }, | 
 |   all(promises) { | 
 |     return Axios.all(promises); | 
 |   }, | 
 |   spread(callback) { | 
 |     return Axios.spread(callback); | 
 |   } | 
 | }; | 
 |  | 
 | export const getResponseCount = responses => { | 
 |   let successCount = 0; | 
 |   let errorCount = 0; | 
 |  | 
 |   responses.forEach(response => { | 
 |     if (response instanceof Error) errorCount++; | 
 |     else successCount++; | 
 |   }); | 
 |  | 
 |   return { | 
 |     successCount, | 
 |     errorCount | 
 |   }; | 
 | }; |