<PackageReference Include="Azure.Storage.Blobs" Version="12.23.0-beta.2" />

StorageTelemetryPolicy

using Azure.Core; using System; namespace Azure.Storage { internal class StorageTelemetryPolicy { [Flags] private enum AzFeatures { None = 0, CseV1 = 1, CseV2 = 2 } private const string CseIdentifierV2 = "azstorage-clientsideencryption/2.0"; private const string CseIdentifierV1 = "azstorage-clientsideencryption/1.0"; public static StorageTelemetryPolicy Shared { get; } = new StorageTelemetryPolicy(); private StorageTelemetryPolicy() : this() { } public override void OnSendingRequest(HttpMessage message) { AzFeatures azFeatures = AzFeatures.None; object obj = default(object); if (message.TryGetProperty("Azure.Storage.StorageTelemetryPolicy.ClientSideEncryption.V2", ref obj)) azFeatures |= AzFeatures.CseV2; else if (message.TryGetProperty("Azure.Storage.StorageTelemetryPolicy.ClientSideEncryption.V1", ref obj)) { azFeatures |= AzFeatures.CseV1; } if (azFeatures != 0) ApplyAzFeatures(message, azFeatures); } private static void ApplyAzFeatures(HttpMessage message, AzFeatures azFeatures) { string text = Serialize(azFeatures); RequestHeaders headers = message.get_Request().get_Headers(); string text2 = default(string); if (headers.TryGetValue(Names.get_UserAgent(), ref text2) && !text2.Contains(text)) { headers = message.get_Request().get_Headers(); headers.SetValue(Names.get_UserAgent(), TransformUserAgent(text2, text)); } else { headers = message.get_Request().get_Headers(); headers.SetValue(Names.get_UserAgent(), text); } } private static string Serialize(AzFeatures azFeatures) { if ((azFeatures & AzFeatures.CseV2) == AzFeatures.CseV2) return "azstorage-clientsideencryption/2.0"; if ((azFeatures & AzFeatures.CseV1) == AzFeatures.CseV1) return "azstorage-clientsideencryption/1.0"; return ""; } private static string TransformUserAgent(string userAgent, string injection) { if (string.IsNullOrEmpty(injection)) return userAgent; return string.Join(" ", injection, userAgent); } } }