public getRequestTelemetry()

in AutoCollection/HttpRequestParser.ts [68:117]


    public getRequestTelemetry(baseTelemetry?: Contracts.Telemetry): Contracts.RequestTelemetry {

        let name = this.method;
        try {
            name += " " + new url.URL(this.url).pathname;
        }
        catch (ex) { // Invalid URL
        }

        var requestTelemetry: Contracts.RequestTelemetry & Contracts.Identified = {
            id: this.requestId,
            name: name,
            url: this.url,
            /*
            See https://github.com/microsoft/ApplicationInsights-dotnet-server/blob/25d695e6a906fbe977f67be3966d25dbf1c50a79/Src/Web/Web.Shared.Net/RequestTrackingTelemetryModule.cs#L250
            for reference
            */
            source: this.sourceCorrelationId,
            duration: this.duration,
            resultCode: this.statusCode ? this.statusCode.toString() : null,
            success: this._isSuccess(),
            properties: this.properties
        };

        if (baseTelemetry && baseTelemetry.time) {
            requestTelemetry.time = baseTelemetry.time;
        } else if (this.startTime) {
            requestTelemetry.time = new Date(this.startTime);
        }

        // We should keep any parameters the user passed in
        // Except the fields defined above in requestTelemetry, which take priority
        // Except the properties field, where they're merged instead, with baseTelemetry taking priority
        if (baseTelemetry) {
            // Copy missing fields
            for (let key in baseTelemetry) {
                if (!(<any>requestTelemetry)[key]) {
                    (<any>requestTelemetry)[key] = (<any>baseTelemetry)[key];
                }
            }
            // Merge properties
            if (baseTelemetry.properties) {
                for (let key in baseTelemetry.properties) {
                    requestTelemetry.properties[key] = baseTelemetry.properties[key];
                }
            }
        }

        return requestTelemetry;
    }