dd-trace
Version:
Datadog APM tracing client for JavaScript
54 lines (44 loc) • 1.19 kB
JavaScript
const { SpanStatsEncoder } = require('../../encode/span-stats')
const pkg = require('../../../../../package.json')
const BaseWriter = require('../common/writer')
const request = require('../common/request')
const log = require('../../log')
class Writer extends BaseWriter {
constructor ({ url }) {
super(...arguments)
this._url = url
this._encoder = new SpanStatsEncoder(this)
}
_sendPayload (data, _, done) {
makeRequest(data, this._url, (err, res) => {
if (err) {
log.error('Error sending span stats', err)
done()
return
}
log.debug(`Response from the intake: ${res}`)
done()
})
}
}
function makeRequest (data, url, cb) {
const options = {
path: '/v0.6/stats',
method: 'PUT',
headers: {
'Datadog-Meta-Lang': 'javascript',
'Datadog-Meta-Tracer-Version': pkg.version,
'Content-Type': 'application/msgpack'
}
}
options.protocol = url.protocol
options.hostname = url.hostname
options.port = url.port
log.debug(() => `Request to the intake: ${JSON.stringify(options)}`)
request(data, options, (err, res) => {
cb(err, res)
})
}
module.exports = {
Writer
}