| File: Http\HttpDiagnosticsHttpWebRequestExtensions.cs | Web Access |
| Project: src\src\Libraries\Microsoft.Extensions.Http.Diagnostics\Microsoft.Extensions.Http.Diagnostics.csproj (Microsoft.Extensions.Http.Diagnostics) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Http.Diagnostics; using Microsoft.Shared.Diagnostics; namespace System.Net; /// <summary> /// Extensions for telemetry utilities. /// </summary> public static class HttpDiagnosticsHttpWebRequestExtensions { /// <summary> /// Sets metadata for outgoing requests to be used for telemetry purposes. /// </summary> /// <param name="request"><see cref="HttpWebRequest"/> object.</param> /// <param name="metadata">Metadata for the request.</param> public static void SetRequestMetadata(this HttpWebRequest request, RequestMetadata metadata) { _ = Throw.IfNull(request); _ = Throw.IfNull(metadata); request.Headers.Add(Constants.HttpWebConstants.RequestRouteHeader, metadata.RequestRoute); request.Headers.Add(Constants.HttpWebConstants.RequestNameHeader, metadata.RequestName); request.Headers.Add(Constants.HttpWebConstants.DependencyNameHeader, metadata.DependencyName); } /// <summary> /// Gets metadata for outgoing requests to be used for telemetry purposes. /// </summary> /// <param name="request"><see cref="HttpWebRequest"/> object.</param> /// <returns>Request metadata.</returns> public static RequestMetadata? GetRequestMetadata(this HttpWebRequest request) { _ = Throw.IfNull(request); string? requestRoute = request.Headers.Get(Constants.HttpWebConstants.RequestRouteHeader); if (requestRoute == null) { return null; } string? dependencyName = request.Headers.Get(Constants.HttpWebConstants.DependencyNameHeader); string? requestName = request.Headers.Get(Constants.HttpWebConstants.RequestNameHeader); var requestMetadata = new RequestMetadata { RequestRoute = requestRoute, RequestName = string.IsNullOrEmpty(requestName) ? TelemetryConstants.Unknown : requestName, DependencyName = string.IsNullOrEmpty(dependencyName) ? TelemetryConstants.Unknown : dependencyName }; return requestMetadata; } }