public static trackRequest()

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);
            });
        }
    }