sheercms
Version:
Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.
107 lines (94 loc) • 2.89 kB
JavaScript
var logger = require('../logger');
var api = require('../api');
var auth = require('../auth');
/*
callback: (err)
*/
module.exports.init = function(server, callback) {
//routes
server.post('/cms/cache/clear', auth.authenticate, routeCacheClear);
server.get('/cms/cache/stats', auth.authenticate, routeCacheStats);
if (callback)
callback(null);
};
/*
POST ~/cms/cache/clear
*/
function routeCacheClear(req, res, next) {
try {
var key = req.body.key;
var type = req.body.type;
if (type) {
var prefix;
if (type === 'item')
prefix = 'item:';
else if (type === 'output')
prefix = 'output:';
else
prefix = null;
api.cache.removeAll(prefix, function(err) {
if (err) {
res.json({ success: false, message: err.message });
}
else {
api.cache.count(function(err, count) {
if (err) {
res.json({ success: false, message: err.message });
}
else {
res.json({ success: true, message: "Cache cleared successfully!", count: count });
}
});
}
});
}
else if (key) {
api.cache.remove(key, function(err) {
if (err) {
res.json({ success: false, message: err.message });
}
else {
api.cache.count(function(err, count) {
if (err) {
res.json({ success: false, message: err.message });
}
else {
res.json({ success: true, message: "Cache key cleared successfully: " + key, count: count });
}
});
}
});
}
else {
res.json({ success: false, message: "Invalid parameters." });
}
} catch(e) {
logger.error(e);
res.json({ success: false, message: "Error clearing the cache." });
}
}
/*
GET ~/cms/cache/stats
*/
function routeCacheStats(req, res, next) {
try {
var stats = {
count: 0,
success: true
};
api.cache.count(function(err, count) {
if (err) {
res.json({ success: false, message: err.message });
}
else {
stats.count = count;
stats.success = true;
res.json(stats);
}
});
}
catch(e) {
logger.error(e);
res.json({ success: false, message: "Error retrieving cache stats." });
}
}