in AutoCollection/HttpDependencyParser.ts [45:108]
public getDependencyTelemetry(baseTelemetry?: Contracts.Telemetry, dependencyId?: string): Contracts.DependencyTelemetry {
let dependencyName = this.method.toUpperCase();
let remoteDependencyType = Contracts.RemoteDependencyDataConstants.TYPE_HTTP;
let remoteDependencyTarget = "";
try {
let urlObject = new url.URL(this.url);
urlObject.search = undefined;
urlObject.hash = undefined;
dependencyName += " " + urlObject.pathname;
remoteDependencyTarget = urlObject.hostname;
if (urlObject.port) {
remoteDependencyTarget += ":" + urlObject.port;
}
}
catch (ex) { // Invalid URL
}
if (this.correlationId) {
remoteDependencyType = Contracts.RemoteDependencyDataConstants.TYPE_AI;
if (this.correlationId !== CorrelationIdManager.correlationIdPrefix) {
remoteDependencyTarget += " | " + this.correlationId;
}
} else {
remoteDependencyType = Contracts.RemoteDependencyDataConstants.TYPE_HTTP;
}
var dependencyTelemetry: Contracts.DependencyTelemetry & Contracts.Identified = {
id: dependencyId,
name: dependencyName,
data: this.url,
duration: this.duration,
success: this._isSuccess(),
resultCode: this.statusCode ? this.statusCode.toString() : null,
properties: this.properties || {},
dependencyTypeName: remoteDependencyType,
target: remoteDependencyTarget
};
if (baseTelemetry && baseTelemetry.time) {
dependencyTelemetry.time = baseTelemetry.time;
} else if (this.startTime) {
dependencyTelemetry.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>dependencyTelemetry)[key]) {
(<any>dependencyTelemetry)[key] = (<any>baseTelemetry)[key];
}
}
// Merge properties
if (baseTelemetry.properties) {
for (let key in baseTelemetry.properties) {
dependencyTelemetry.properties[key] = baseTelemetry.properties[key];
}
}
}
return dependencyTelemetry;
}