summaryrefslogtreecommitdiffstats
path: root/afb-client/app/Frontend/etc/AppConfig.js
blob: 5c9283ef882ae0db79635224d30116341a8e2741 (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
(function () {
    'use strict';

    // _all modules only reference dependencies
    angular.module('AppConfig', [])

            // Factory is a singleton and share its context within all instances.
            .factory('AppConfig', function (urlquery) {

                var myConfig = {
                    paths: { // Warning paths should end with /
                        image : 'images/',
                        avatar: 'images/avatars/',
                        audio : 'images/audio/',
                        appli : 'images/appli/'
                    },
                                        
                    session: { // Those data are updated by session service
                       create  : '/api/token/create',
                       refresh : '/api/token/refresh',
                       check   : '/api/token/check',
                       reset   : '/api/token/reset',
                       ping    : '/api/token/check',
                       initial : urlquery.token || '123456789',  // typical dev initial token
                       timeout : 3600,         // timeout is updated client sessin context creation
                       pingrate: 30,           // Ping rate to check if server is still alive
                       uuid    : '',           // uuid map with cookie or long term session access key
                       token   : ''            // will be returned from authentication    
                    }
                };

                return myConfig;
            })
            
            // Factory is a singleton and share its context within all instances.
            .factory('AppCall', function ($http, AppConfig, $log) {
                var myCalls = {
                    get : function(plugin, action, query, cbresponse, cberror) {                                                
                        if (!query.token) query.token = AppConfig.session.token; // add token to provided query
                        var handle= $http.get('/api/' + plugin + '/' + action , {params: query}).then (onsuccess, onerror);
                        
                        handle.onsuccess (function(data, errcode, headers, config) {
                            // if token was updated keep it within application cache
                            if (data.request.token) AppConfig.session.token = data.request.token;
                            if (data.request.uuid)  AppConfig.session.uuid  = data.request.uuid;
                            if (data.request.timeout) AppConfig.session.timeout = data.request.timeout;
                        
                            cbresponse(data, errcode, headers, config);
                        });
                        
                        handle.onerror   (function(data, errcode, headers, config) {
                            if (cberror) cberror(data, errcode, headers, config);
                            else cbresponse(data, errcode, headers, config);
                        });
                    }
                };
                return myCalls;
            });

})();