<PackageReference Include="Azure.Storage.Blobs" Version="12.24.1" />

SasExtensions

static class SasExtensions
Extension methods for Sas.
using System; using System.Collections.Generic; using System.Globalization; using System.Runtime.CompilerServices; using System.Text; namespace Azure.Storage.Sas { internal static class SasExtensions { private const string NoneName = null; private const string HttpsName = "https"; private const string HttpsAndHttpName = "https,http"; private const string HttpAndHttpsName = "http,https"; internal static string ToPermissionsString(this AccountSasResourceTypes resourceTypes) { StringBuilder stringBuilder = new StringBuilder(); if ((resourceTypes & 1) == 1) stringBuilder.Append('s'); if ((resourceTypes & 2) == 2) stringBuilder.Append('c'); if ((resourceTypes & 4) == 4) stringBuilder.Append('o'); return stringBuilder.ToString(); } internal static AccountSasResourceTypes ParseResourceTypes(string s) { AccountSasResourceTypes val = 0; foreach (char c in s) { AccountSasResourceTypes val2 = val; AccountSasResourceTypes val3; switch (c) { case 's': val3 = 1; break; case 'c': val3 = 2; break; case 'o': val3 = 4; break; default: throw Errors.InvalidResourceType(c); } val = (val2 | val3); } return val; } internal static string ToProtocolString(this SasProtocol protocol) { switch ((int)protocol) { case 2: return "https"; case 1: return "https,http"; default: return null; } } public static SasProtocol ParseProtocol(string s) { if (s == null || (s != null && s.Length == 0)) return 0; if (s == "https") return 2; if (s == "https,http" || s == "http,https") return 1; throw Errors.InvalidSasProtocol("s", "SasProtocol"); } internal static string ToPermissionsString(this AccountSasServices services) { StringBuilder stringBuilder = new StringBuilder(); if ((services & 1) == 1) stringBuilder.Append('b'); if ((services & 4) == 4) stringBuilder.Append('f'); if ((services & 2) == 2) stringBuilder.Append('q'); if ((services & 8) == 8) stringBuilder.Append('t'); return stringBuilder.ToString(); } internal static AccountSasServices ParseAccountServices(string s) { AccountSasServices val = 0; foreach (char c in s) { AccountSasServices val2 = val; AccountSasServices val3; switch (c) { case 'b': val3 = 1; break; case 'q': val3 = 2; break; case 'f': val3 = 4; break; case 't': val3 = 8; break; default: throw Errors.InvalidService(c); } val = (val2 | val3); } return val; } internal static string FormatTimesForSasSigning(DateTimeOffset time) { if (!(time == default(DateTimeOffset))) return time.ToString("yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture); return ""; } internal static void AddToBuilder(StringBuilder sb, string key, string value) { sb.Append((sb.Length > 0) ? "&" : "").Append(key).Append('=') .Append(value); } internal static string ValidateAndSanitizeRawPermissions(string permissions, List<char> validPermissionsInOrder) { if (permissions == null) return null; permissions = permissions.ToLowerInvariant(); HashSet<char> hashSet = new HashSet<char>(validPermissionsInOrder); HashSet<char> hashSet2 = new HashSet<char>(); string text = permissions; foreach (char c in text) { if (!hashSet.Contains(c)) { DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(30, 1); defaultInterpolatedStringHandler.AppendFormatted(c); defaultInterpolatedStringHandler.AppendLiteral(" is not a valid SAS permission"); throw new ArgumentException(defaultInterpolatedStringHandler.ToStringAndClear()); } hashSet2.Add(c); } StringBuilder stringBuilder = new StringBuilder(); foreach (char item in validPermissionsInOrder) { if (hashSet2.Contains(item)) stringBuilder.Append(item); } return stringBuilder.ToString(); } } }