dd-trace
Version:
Datadog APM tracing client for JavaScript
40 lines (29 loc) • 1.02 kB
JavaScript
const { storage } = require('../../datadog-core')
const RouterPlugin = require('../../datadog-plugin-router/src')
const web = require('../../dd-trace/src/plugins/util/web')
class HapiPlugin extends RouterPlugin {
static id = 'hapi'
constructor (...args) {
super(...args)
this._requestSpans = new WeakMap()
this.addSub('apm:hapi:request:handle', ({ req }) => {
const store = storage('legacy').getStore()
const span = store && store.span
this.setFramework(req, 'hapi', this.config)
this._requestSpans.set(req, span)
})
this.addSub('apm:hapi:request:route', ({ req, route }) => {
web.setRoute(req, route)
})
this.addSub('apm:hapi:request:error', error => {
if (!error || !error.isBoom || !this.config.validateStatus(error.output.statusCode)) {
this.addError(error)
}
})
this.addBind('apm:hapi:extension:start', ({ req }) => {
return this._requestSpans.get(req)
})
}
}
module.exports = HapiPlugin