caesarjs
Version:
A microservice framework for node.js implementing client-server mutual certificate authentication
55 lines (47 loc) • 2.04 kB
JavaScript
const pluginBuilder = require('../../plugin/plugin-builder');
const patternObjecUtils = require('../utils/find-pattern-object');
module.exports = (statsDb) => {
const builder = new pluginBuilder('caesarjs-server-lokijs-db', 'Server lokijs plugin', 'Caesar.js team', '0.0.1');
builder.addMiddleware(
(req, res, next) => {
req.statsDb = statsDb;
next();
}
);
builder.addRouteWithPatternObject({ role: 'stats', cmd: 'getTodayCalls'}, (req, res) => {
const count = req.statsDb.getTodayCount();
res.caesarJson({count});
});
builder.addRouteWithPatternObject({ role: 'stats', cmd: 'getServerStats'}, (req, res) => {
const stats = req.statsDb.getStats(req.clientId);
const statsRefined = stats.map((stat) => {
const patternObject = patternObjecUtils.findPatternObjectByPath(req.userRoutes, stat.path);
return {
clientId: stat.clientId,
count: stat.count,
patternObject: patternObject,
path: stat.path
};
});
res.caesarJson(statsRefined);
});
builder.addRouteWithPatternObject({ role: 'stats', cmd: 'getServerMetrics'}, (req, res) => {
const patternObject = req.data.patternObject;
const path = patternObjecUtils.findPathByPatternObject(req.userRoutes, patternObject);
const numberOfResults = (req.data.numberOfResults) ? req.data.numberOfResults : 10;
const metrics = req.statsDb.getMetrics(path, numberOfResults);
const metricsRefined = metrics.map((metric) => {
return {
seconds: metric.seconds,
nanoseconds: metric.nanoseconds,
startTime: metric.startTime,
endTime: metric.endTime,
time: metric.time,
path: path,
patternObject: patternObject
};
});
res.caesarJson(metricsRefined);
});
return builder.buildPlugin();
};