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