Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const response = args[1] as ServerResponse;
const pathname = request.url
? url.parse(request.url).pathname || '/'
: '/';
const method = request.method || 'GET';
plugin._logger.debug('%s plugin incomingRequest', plugin.moduleName);
if (Utils.isIgnored(pathname, plugin._config.ignoreIncomingPaths)) {
return original.apply(this, [event, ...args]);
}
const propagation = plugin._tracer.getHttpTextFormat();
const headers = request.headers;
const spanOptions: SpanOptions = {
kind: SpanKind.SERVER,
};
const spanContext = propagation.extract(Format.HTTP, headers);
if (spanContext && isValid(spanContext)) {
spanOptions.parent = spanContext;
}
const span = plugin._startHttpSpan(`${method} ${pathname}`, spanOptions);
return plugin._tracer.withSpan(span, () => {
plugin._tracer.bind(request);
plugin._tracer.bind(response);
// Wraps end (inspired by:
// https://github.com/GoogleCloudPlatform/cloud-trace-nodejs/blob/master/src/plugins/plugin-connect.ts#L75)
const originalEnd = response.end;
return function func(
this: typeof handlerSet,
call: ServerCallWithMeta,
callback: SendUnaryDataCallback
) {
const self = this;
const spanName = `grpc.${name.replace('/', '')}`;
const spanOptions: SpanOptions = {
kind: SpanKind.SERVER,
parent: plugin._getSpanContext(call.metadata),
};
plugin._logger.debug(
'patch func: %s',
JSON.stringify(spanOptions)
);
const span = plugin._tracer
.startSpan(spanName, spanOptions)
.setAttributes({
[AttributeNames.GRPC_KIND]: spanOptions.kind,
[AttributeNames.COMPONENT]: GrpcPlugin.component,
});
plugin._tracer.withSpan(span, () => {