UNPKG

session-timeout

Version:
71 lines (58 loc) 1.81 kB
angular.module('ngIdle.keepalive', []) .provider('Keepalive', function() { var options = { http: null, interval: 10 * 60 }; this.http = function(value) { if (!value) throw new Error('Argument must be a string containing a URL, or an object containing the HTTP request configuration.'); if (angular.isString(value)) { value = { url: value, method: 'GET' }; } value.cache = false; options.http = value; }; var setInterval = this.interval = function(seconds) { seconds = parseInt(seconds); if (isNaN(seconds) || seconds <= 0) throw new Error('Interval must be expressed in seconds and be greater than 0.'); options.interval = seconds; }; this.$get = ['$rootScope', '$log', '$interval', '$http', function($rootScope, $log, $interval, $http) { var state = { ping: null }; function handleResponse(response) { $rootScope.$broadcast('KeepaliveResponse', response.data, response.status); } function ping() { $rootScope.$broadcast('Keepalive'); if (angular.isObject(options.http)) { $http(options.http) .then(handleResponse) .catch(handleResponse); } } return { _options: function() { return options; }, setInterval: setInterval, start: function() { $interval.cancel(state.ping); state.ping = $interval(ping, options.interval * 1000); return state.ping; }, stop: function() { $interval.cancel(state.ping); }, ping: function() { ping(); } }; } ]; });