blob: 304d72376090b26ea707d63d0a1302143e60af33 [file] [log] [blame]
Iftekharul Islam99d199f2017-03-24 15:28:25 -05001/**
2 * api Interceptor
3 *
4 * @module app/common/services/apiInterceptor
5 * @exports apiInterceptor
6 * @name apiInterceptor
7
8 * @version 0.0.1
9 */
10
11window.angular && (function (angular) {
12 'use strict';
13
14 angular
15 .module('app.common.services')
16 .service('apiInterceptor', ['$q', '$rootScope', 'dataService', function($q, $rootScope, dataService){
17 return {
18 'request': function(config){
Iftekharul Islam99d199f2017-03-24 15:28:25 -050019 dataService.loading = true;
Iftekharul Islam1221c0c2017-07-27 10:23:49 -050020 config.timeout = 20000;
Iftekharul Islam99d199f2017-03-24 15:28:25 -050021 return config;
22 },
23 'response': function(response){
24 dataService.loading = false;
Iftekharul Islam99d199f2017-03-24 15:28:25 -050025
Iftekharul Islamcd789502017-04-19 14:37:55 -050026 //not interested in template requests
27 if(!/^https?\:/i.test(response.config.url)){
28 return response;
29 }
30
31 dataService.last_updated = new Date();
Iftekharul Islamc1535922017-06-19 12:49:04 -050032 if(!response){
Iftekharul Islam99d199f2017-03-24 15:28:25 -050033 dataService.server_unreachable = true;
Iftekharul Islamcd789502017-04-19 14:37:55 -050034 }else{
35 dataService.server_unreachable = false;
Iftekharul Islam99d199f2017-03-24 15:28:25 -050036 }
37
38 if(response && response.status == 'error' &&
39 dataService.path != '/login'){
40 $rootScope.$emit('timedout-user', {});
41 }
42
43 return response;
44 },
45 'responseError': function(rejection){
Gunnar Mills32581cf2018-03-16 15:52:54 -050046 if (dataService.ignoreHttpError === false)
47 {
48 // If unauthorized, log out
49 if (rejection.status == 401){
50 if (dataService.path != '/login'){
51 $rootScope.$emit('timedout-user', {});
52 }
53 } else if (rejection.status == -1){
54 dataService.server_unreachable = true;
Ed Tanousbbcf6702017-10-06 13:53:06 -070055 }
Ed Tanousbbcf6702017-10-06 13:53:06 -070056
Gunnar Mills32581cf2018-03-16 15:52:54 -050057 dataService.loading = false;
58 }
Iftekharul Islam99d199f2017-03-24 15:28:25 -050059 return $q.reject(rejection);
60 }
61 };
62 }]);
63
Ed Tanousbbcf6702017-10-06 13:53:06 -070064})(window.angular);