summaryrefslogtreecommitdiffstats
path: root/app/common/services/apiInterceptor.js
blob: 8bbb6f49e15a50bcad4cd3f0a5552ac0a53ca3b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/**
 * api Interceptor
 *
 * @module app/common/services/apiInterceptor
 * @exports apiInterceptor
 * @name apiInterceptor

 * @version 0.0.1
 */

window.angular && (function (angular) {
    'use strict';

    angular
        .module('app.common.services')
        .service('apiInterceptor', ['$q', '$rootScope', 'dataService', function($q, $rootScope, dataService){
            return {
                'request': function(config){
                    dataService.loading = true;
                    config.timeout = 20000;
                    return config;
                },
                'response': function(response){
                    dataService.loading = false;

                    //not interested in template requests
                    if(!/^https?\:/i.test(response.config.url)){
                        return response;
                    }

                    dataService.last_updated = new Date();
                    if(!response){
                        dataService.server_unreachable = true;
                    }else{
                        dataService.server_unreachable = false;
                    }

                    if(response && response.status == 'error' &&
                       dataService.path != '/login'){
                        $rootScope.$emit('timedout-user', {});
                    }

                    return response;
                },
                'responseError': function(rejection){
                    // If unauthorized, log out
                    if (rejection.status == 401){
                        if (dataService.path != '/login'){
                            $rootScope.$emit('timedout-user', {});
                        }
                    } else if (rejection.status == -1){
                        dataService.server_unreachable = true;
                    }

                    dataService.loading = false;
                    return $q.reject(rejection);
                }
            };
        }]);

})(window.angular);
OpenPOWER on IntegriCloud