@uyu423/pinpoint-node-agent
Version:
Pinpoint node agent provided by NAVER (Personalized version)
66 lines (48 loc) • 1.71 kB
JavaScript
/**
* Pinpoint Node.js Agent
* Copyright 2020-present NAVER Corp.
* Apache License v2.0
*/
const shimmer = require('shimmer')
const ServiceTypeCode = require('../../constant/service-type').ServiceTypeCode
const AsyncIdAccessor = require('../../context/async-id-accessor')
module.exports = function(agent, version, request) {
shimmer.wrap(request, 'get', function (original) {
return function () {
const trace = agent.traceContext.currentTraceObject()
let spanEventRecorder = null
if (trace) {
spanEventRecorder = trace.traceBlockBegin()
spanEventRecorder.recordServiceType(ServiceTypeCode.ASYNC_HTTP_CLIENT_INTERNAL)
spanEventRecorder.recordApiDesc('request.get')
}
const result = original.apply(this, arguments)
if (trace) {
let asyncId = spanEventRecorder.recordNextAsyncId()
AsyncIdAccessor.setAsyncId(result, asyncId)
trace.traceBlockEnd(spanEventRecorder)
}
return result
}
})
shimmer.wrap(request, 'post', function (original) {
return function () {
const trace = agent.traceContext.currentTraceObject()
let spanEventRecorder = null
if (trace) {
spanEventRecorder = trace.traceBlockBegin()
spanEventRecorder.recordServiceType(ServiceTypeCode.ASYNC_HTTP_CLIENT_INTERNAL)
spanEventRecorder.recordApiDesc('request.post')
}
const result = original.apply(this, arguments)
if (trace) {
let asyncId = spanEventRecorder.recordNextAsyncId()
AsyncIdAccessor.setAsyncId(result, asyncId)
trace.traceBlockEnd(spanEventRecorder)
}
return result
}
})
return request
}