All files / lib metrics.js

50% Statements 6/12
0% Branches 0/10
0% Functions 0/3
60% Lines 6/10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24  1x   1x 1x   1x   1x   1x                          
'use strict'
const metrics = module.exports = { }
 
const EventEmitter = require('events').EventEmitter
metrics.emitter = new EventEmitter()
 
metrics._replaceUUIDsInRoute = routeString => routeString.replace(/[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}/ig, ':id')
 
metrics._replaceTrailingSlashesInRoute = routeString => routeString.replace(/\/$/, '')
 
metrics.processResponse = (request, httpCode, payload, duration) => {
  let route = request ? request.route.path : 'invalid'
  route = metrics._replaceUUIDsInRoute(route)
  route = metrics._replaceTrailingSlashesInRoute(route)
 
  metrics.emitter.emit('data', {
    route,
    verb: request ? request.route.verb || 'GET' : 'GET',
    httpCode,
    error: payload.errors ? payload.errors[0].title : null,
    duration: duration || 0
  })
}