(function(){ "use strict"; angular.module('shared') .provider('SessionApi', function(){ var requestConfig = { apiRoot: '/api/auth/session', logoutPath: '/main/Logout', requestSuffix: '' }; function configure(configuration){ requestConfig = angular.extend(requestConfig, configuration); } var sessionApiService = ['$http', 'windowService', function($http, windowService){ function getDetails() { return api({ method: 'GET', url: '/details' }); } function keepAlive(){ return api({ method: 'POST', url: '/keepAlive' }); } function logout(){ windowService.redirect(requestConfig.logoutPath); } function timeout(){ windowService.redirect(requestConfig.logoutPath + '?timeout=true'); } function api(config){ if(config.url !== undefined){ config = angular.extend({}, config, { url: requestConfig.apiRoot + config.url + requestConfig.requestSuffix }); } return $http(config) .then(function(response){ return response.data; }); } return { getDetails: getDetails, keepAlive: keepAlive, logout: logout, timeout: timeout } }]; return { $get: sessionApiService, configure: configure } }); })();