in AutoCollection/HttpRequests.ts [205:248]
public static trackRequest(client: TelemetryClient, telemetry: Contracts.NodeHttpRequestTelemetry, _requestParser?: HttpRequestParser) {
if (!telemetry.request || !telemetry.response || !client) {
Logging.info("AutoCollectHttpRequests.trackRequest was called with invalid parameters: ", !telemetry.request, !telemetry.response, !client);
return;
}
// store data about the request
var correlationContext = CorrelationContextManager.getCurrentContext();
var requestParser = _requestParser || new HttpRequestParser(telemetry.request, correlationContext && correlationContext.operation.parentId);
if (Util.canIncludeCorrelationHeader(client, requestParser.getUrl())) {
AutoCollectHttpRequests.addResponseCorrelationIdHeader(client, telemetry.response);
}
// Overwrite correlation context with request parser results (if not an automatic track. we've already precalculated the correlation context in that case)
if (correlationContext && !_requestParser) {
correlationContext.operation.id = requestParser.getOperationId(client.context.tags) || correlationContext.operation.id;
correlationContext.operation.name = requestParser.getOperationName(client.context.tags) || correlationContext.operation.name;
correlationContext.operation.parentId = requestParser.getOperationParentId(client.context.tags) || correlationContext.operation.parentId;
(<PrivateCustomProperties>correlationContext.customProperties).addHeaderData(requestParser.getCorrelationContextHeader());
}
// response listeners
if (telemetry.response.once) {
telemetry.response.once("finish", () => {
AutoCollectHttpRequests.endRequest(client, requestParser, telemetry, null, null);
});
}
// track a failed request if an error is emitted
if (telemetry.request.on) {
telemetry.request.on("error", (error: any) => {
AutoCollectHttpRequests.endRequest(client, requestParser, telemetry, null, error);
});
}
// track an aborted request if an aborted event is emitted
if (telemetry.request.on) {
telemetry.request.on("aborted", () => {
const errorMessage = "The request has been aborted and the network socket has closed.";
AutoCollectHttpRequests.endRequest(client, requestParser, telemetry, null, errorMessage);
});
}
}