sheercms
Version:
Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.
67 lines (57 loc) • 1.98 kB
JavaScript
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);
}
}
};
});