linagora-rse
Version:
34 lines (27 loc) • 863 B
JavaScript
;
var logger = require('../../core').logger;
function moduleHooks(req, res, next) {
var realjson = res.json;
function jsonHook(code, json) {
var specificRoute = 'route:' + req.method.toLowerCase() + ':' + req.route.path;
var webserver = require('../index').webserver;
var hookargs = arguments;
// Handle res.status(200).json({})
if (arguments.length === 1) {
json = code;
hookargs = [json];
}
webserver.emit(specificRoute, [req, res, json], function() {
webserver.emit('route', [req, res, json], function(err) {
if (err) {
logger.error('An ESN module triggered an error while hooking ' +
req.route.path + ': ' + err);
}
realjson.apply(res, hookargs);
});
});
}
res.json = jsonHook;
next();
}
module.exports = moduleHooks;