1/** 2 * api Interceptor 3 * 4 * @module app/common/services/apiInterceptor 5 * @exports apiInterceptor 6 * @name apiInterceptor 7 8 */ 9 10window.angular && (function (angular) { 11 'use strict'; 12 13 angular 14 .module('app.common.services') 15 .service('apiInterceptor', ['$q', '$rootScope', 'dataService', function($q, $rootScope, dataService){ 16 return { 17 'request': function(config){ 18 dataService.loading = true; 19 // If caller has not defined a timeout, set to default of 20s 20 if (config.timeout == null){ 21 config.timeout = 20000; 22 } 23 return config; 24 }, 25 'response': function(response){ 26 dataService.loading = false; 27 28 //not interested in template requests 29 if(!/^https?\:/i.test(response.config.url)){ 30 return response; 31 } 32 33 dataService.last_updated = new Date(); 34 if(!response){ 35 dataService.server_unreachable = true; 36 }else{ 37 dataService.server_unreachable = false; 38 } 39 40 if(response && response.status == 'error' && 41 dataService.path != '/login'){ 42 $rootScope.$emit('timedout-user', {}); 43 } 44 45 return response; 46 }, 47 'responseError': function(rejection){ 48 if (dataService.ignoreHttpError === false) 49 { 50 // If unauthorized, log out 51 if (rejection.status == 401){ 52 if (dataService.path != '/login'){ 53 $rootScope.$emit('timedout-user', {}); 54 } 55 } else if (rejection.status == -1){ 56 dataService.server_unreachable = true; 57 } 58 59 dataService.loading = false; 60 } 61 return $q.reject(rejection); 62 } 63 }; 64 }]); 65 66})(window.angular); 67