/// <summary> /// Implements initialization logic. /// </summary> /// <param name="platformContext">Http context.</param> /// <param name="requestTelemetry">Request telemetry object associated with the current request.</param> /// <param name="telemetry">Telemetry item to initialize.</param> protected override void OnInitializeTelemetry(HttpContext platformContext, RequestTelemetry requestTelemetry, ITelemetry telemetry) { if (platformContext != null) { var request = platformContext.GetRequest(); if (request != null) { foreach (var pattern in this.filterPatterns) { if (pattern.RegularExpression != null && request.UserAgent != null) { var match = pattern.RegularExpression.Match(request.UserAgent); if (match.Success) { if (string.IsNullOrEmpty(telemetry.Context.Operation.SyntheticSource)) { telemetry.Context.Operation.SyntheticSource = !string.IsNullOrWhiteSpace(pattern.SourceName) ? pattern.SourceName : match.Value; return; } } } } } } }
/// <summary> /// Implements initialization logic. /// </summary> /// <param name="platformContext">Http context.</param> /// <param name="requestTelemetry">Request telemetry object associated with the current request.</param> /// <param name="telemetry">Telemetry item to initialize.</param> protected override void OnInitializeTelemetry(HttpContext platformContext, RequestTelemetry requestTelemetry, ITelemetry telemetry) { if (string.IsNullOrEmpty(telemetry.Context.Operation.SyntheticSource)) { if (platformContext != null) { var request = platformContext.GetRequest(); if (request != null && !string.IsNullOrEmpty(request.UserAgent)) { // We expect customers to configure telemetry initializer before they add it to active configuration // So we will not protect fiterPatterns array with locks (to improve perf) foreach (string pattern in this.filterPatterns) { if (!string.IsNullOrWhiteSpace(pattern) && request.UserAgent.IndexOf(pattern, StringComparison.OrdinalIgnoreCase) != -1) { telemetry.Context.Operation.SyntheticSource = "Bot"; return; } } } } } }
/// <summary> /// Implements initialization logic. /// </summary> /// <param name="platformContext">Http context.</param> /// <param name="requestTelemetry">Request telemetry object associated with the current request.</param> /// <param name="telemetry">Telemetry item to initialize.</param> protected override void OnInitializeTelemetry( HttpContext platformContext, RequestTelemetry requestTelemetry, ITelemetry telemetry) { if (string.IsNullOrEmpty(telemetry.Context.Operation.SyntheticSource)) { // platformContext and request != null checks are in the base class var request = platformContext.GetRequest(); var runIdHeader = request.UnvalidatedGetHeader(TestRunHeader); var locationHeader = request.UnvalidatedGetHeader(TestLocationHeader); if (!string.IsNullOrEmpty(runIdHeader) && !string.IsNullOrEmpty(locationHeader)) { telemetry.Context.Operation.SyntheticSource = GsmSource; // User id will be Pop location name and RunId (We cannot use just location because of sampling) telemetry.Context.User.Id = locationHeader + "_" + runIdHeader; telemetry.Context.Session.Id = runIdHeader; } } }
/// <summary> /// Implements initialization logic. /// </summary> /// <param name="platformContext">Http context.</param> /// <param name="requestTelemetry">Request telemetry object associated with the current request.</param> /// <param name="telemetry">Telemetry item to initialize.</param> protected override void OnInitializeTelemetry( HttpContext platformContext, RequestTelemetry requestTelemetry, ITelemetry telemetry) { if (platformContext != null) { var request = platformContext.GetRequest(); if (request != null) { foreach (var filter in this.filters) { var filterHeader = request.UnvalidatedGetHeader(filter.FilterHeader); if (!string.IsNullOrEmpty(filterHeader)) { if (string.IsNullOrEmpty(telemetry.Context.Operation.SyntheticSource)) { telemetry.Context.Operation.SyntheticSource = !string.IsNullOrEmpty(filter.SourceName) ? filter.SourceName : filter.FilterHeader; } if (string.IsNullOrEmpty(telemetry.Context.User.Id)) { telemetry.Context.User.Id = request.UnvalidatedGetHeader(filter.UserIdHeader); } if (string.IsNullOrEmpty(telemetry.Context.Session.Id)) { telemetry.Context.Session.Id = !string.IsNullOrEmpty(filter.SessionIdHeader) ? request.UnvalidatedGetHeader(filter.SessionIdHeader) : filterHeader; } } } } } }