UNPKG

sheercms

Version:

Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.

67 lines (57 loc) 1.98 kB
app.service('LogService', function($q, $http, DSCacheFactory) { var self = this; var logCache = DSCacheFactory('logCache', { maxAge: 1800000, // Items added to this cache expire after 30 minutes. cacheFlushInterval: 3600000, // This cache will clear itself every hour. deleteOnExpire: 'aggressive', // Items will be deleted from this cache right when they expire. storageMode: 'localStorage' // This cache will sync itself with `localStorage`. }); self.list = function(useCache) { var d = $q.defer(); var url = '/cms/logs/list'; var data = useCache ? logCache.get(url) : null; if (data) { d.resolve(data); } else { $http.get(url).success(function (data) { logCache.put(url, data); d.resolve(data); }).error(function (data, status) { d.reject(data); }); } return d.promise; }; self.getLog = function(name, level, useCache) { var d = $q.defer(); var url = '/cms/logs/get?name=' + encodeURIComponent(name) + '&level=' + level; var data = useCache ? logCache.get(url) : null; if (data) { d.resolve(data); } else { $http({ url: url, method: 'get', params: {} }).success(function (data) { logCache.put(url, data); d.resolve(data); }).error(function (data, status) { d.reject(data); }); } return d.promise; }; self.clearLogCache = function(name) { var name = encodeURIComponent(name); var keys = logCache.keys(); for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (key.indexOf('name=' + name) > -1) { logCache.remove(key); } } }; });