UNPKG

sheercms

Version:

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

107 lines (94 loc) 2.89 kB
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." }); } }