UNPKG

caesarjs

Version:

A microservice framework for node.js implementing client-server mutual certificate authentication

55 lines (47 loc) 2.04 kB
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(); };