public async Task ListStorageAccountSAS() { //create storage account string accountName = await CreateValidAccountNameAsync(namePrefix); _resourceGroup = await CreateResourceGroupAsync(); StorageAccountContainer storageAccountContainer = _resourceGroup.GetStorageAccounts(); StorageAccountCreateParameters parameters = GetDefaultStorageAccountParameters(); StorageAccount account = (await storageAccountContainer.CreateOrUpdateAsync(accountName, parameters)).Value; AccountSasParameters accountSasParameters = new AccountSasParameters(services: "b", resourceTypes: "sco", permissions: "rl", sharedAccessExpiryTime: Recording.UtcNow.AddHours(1)) { Protocols = HttpProtocol.HttpsHttp, SharedAccessStartTime = Recording.UtcNow, KeyToSign = "key1" }; Response <ListAccountSasResponse> result = await account.GetAccountSASAsync(accountSasParameters); AccountSasParameters resultCredentials = ParseAccountSASToken(result.Value.AccountSasToken); Assert.AreEqual(accountSasParameters.Services, resultCredentials.Services); Assert.AreEqual(accountSasParameters.ResourceTypes, resultCredentials.ResourceTypes); Assert.AreEqual(accountSasParameters.Permissions, resultCredentials.Permissions); Assert.AreEqual(accountSasParameters.Protocols, resultCredentials.Protocols); Assert.NotNull(accountSasParameters.SharedAccessStartTime); Assert.NotNull(accountSasParameters.SharedAccessExpiryTime); }
public static AccountSasParameters ParseAccountSASToken(string accountSAS) { string[] sasProperties = accountSAS.Substring(1).Split(new char[] { '&' }); AccountSasParameters parameters = new AccountSasParameters(); foreach (var property in sasProperties) { string[] keyValue = property.Split(new char[] { '=' }); switch (keyValue[0]) { case "ss": parameters.Services = keyValue[1]; break; case "srt": parameters.ResourceTypes = keyValue[1]; break; case "sp": parameters.Permissions = keyValue[1]; break; case "st": parameters.SharedAccessStartTime = DateTime.Parse(keyValue[1].Replace("%3A", ":").Replace("%3a", ":")).ToUniversalTime(); break; case "se": parameters.SharedAccessExpiryTime = DateTime.Parse(keyValue[1].Replace("%3A", ":").Replace("%3a", ":")).ToUniversalTime(); break; case "sip": parameters.IPAddressOrRange = keyValue[1]; break; case "spr": if (keyValue[1] == "https") { parameters.Protocols = HttpProtocol.Https; } else if (keyValue[1] == "https,http") { parameters.Protocols = HttpProtocol.Httpshttp; } break; default: break; } } return(parameters); }
public virtual Response <ListAccountSasResponse> GetAccountSAS(AccountSasParameters parameters, CancellationToken cancellationToken = default) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } using var scope = _clientDiagnostics.CreateScope("StorageAccount.GetAccountSAS"); scope.Start(); try { var response = _restClient.GetAccountSAS(Id.ResourceGroupName, Id.Name, parameters, cancellationToken); return(response); } catch (Exception e) { scope.Failed(e); throw; } }
public virtual Response <ListAccountSasResponse> ListAccountSAS(string resourceGroupName, string accountName, AccountSasParameters parameters, CancellationToken cancellationToken = default) { using var scope = _clientDiagnostics.CreateScope("StorageAccountsClient.ListAccountSAS"); scope.Start(); try { return(RestClient.ListAccountSAS(resourceGroupName, accountName, parameters, cancellationToken)); } catch (Exception e) { scope.Failed(e); throw; } }
public static AccountSasParameters ParseAccountSASToken(string accountSasToken) { string[] sasProperties = accountSasToken.Substring(1).Split(new char[] { '&' }); string serviceParameters = string.Empty; string resourceTypesParameters = string.Empty; string permissionsParameters = string.Empty; string ipAddressOrRangeParameters = string.Empty; DateTimeOffset sharedAccessStartTimeParameters = new DateTimeOffset(); DateTimeOffset sharedAccessExpiryTimeParameters = new DateTimeOffset(); HttpProtocol? protocolsParameters = null; foreach (var property in sasProperties) { string[] keyValue = property.Split(new char[] { '=' }); switch (keyValue[0]) { case "ss": serviceParameters = keyValue[1]; break; case "srt": resourceTypesParameters = keyValue[1]; break; case "sp": permissionsParameters = keyValue[1]; break; case "st": sharedAccessStartTimeParameters = DateTime.Parse(keyValue[1].Replace("%3A", ":").Replace("%3a", ":")).ToUniversalTime(); break; case "se": sharedAccessExpiryTimeParameters = DateTime.Parse(keyValue[1].Replace("%3A", ":").Replace("%3a", ":")).ToUniversalTime(); break; case "sip": ipAddressOrRangeParameters = keyValue[1]; break; case "spr": if (keyValue[1] == "https") { protocolsParameters = HttpProtocol.Https; } else if (keyValue[1] == "https,http") { protocolsParameters = HttpProtocol.HttpsHttp; } break; default: break; } } AccountSasParameters parameters = new AccountSasParameters(serviceParameters, resourceTypesParameters, permissionsParameters, sharedAccessExpiryTimeParameters) { IPAddressOrRange = ipAddressOrRangeParameters, Protocols = protocolsParameters, SharedAccessStartTime = sharedAccessStartTimeParameters }; return(parameters); }
/// <summary> /// List SAS credentials of a storage account. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group within the user's subscription. The name is /// case insensitive. /// </param> /// <param name='accountName'> /// The name of the storage account within the specified resource group. /// Storage account names must be between 3 and 24 characters in length and use /// numbers and lower-case letters only. /// </param> /// <param name='parameters'> /// The parameters to provide to list SAS credentials for the storage account. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <ListAccountSasResponseInner> ListAccountSASAsync(this IStorageAccountsOperations operations, string resourceGroupName, string accountName, AccountSasParameters parameters, CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.ListAccountSASWithHttpMessagesAsync(resourceGroupName, accountName, parameters, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
/// <summary> /// List SAS credentials of a storage account. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group within the user's subscription. The name is /// case insensitive. /// </param> /// <param name='accountName'> /// The name of the storage account within the specified resource group. /// Storage account names must be between 3 and 24 characters in length and use /// numbers and lower-case letters only. /// </param> /// <param name='parameters'> /// The parameters to provide to list SAS credentials for the storage account. /// </param> public static ListAccountSasResponse ListAccountSAS(this IStorageAccountsOperations operations, string resourceGroupName, string accountName, AccountSasParameters parameters) { return(operations.ListAccountSASAsync(resourceGroupName, accountName, parameters).GetAwaiter().GetResult()); }
public virtual async Task <Response <ListAccountSasResponse> > ListAccountSASAsync(string resourceGroupName, string accountName, AccountSasParameters parameters, CancellationToken cancellationToken = default) { using var scope = _clientDiagnostics.CreateScope("StorageAccountsOperations.ListAccountSAS"); scope.Start(); try { return(await RestClient.ListAccountSASAsync(resourceGroupName, accountName, parameters, cancellationToken).ConfigureAwait(false)); } catch (Exception e) { scope.Failed(e); throw; } }
public async virtual Task <Response <ListAccountSasResponse> > GetAccountSASAsync(AccountSasParameters parameters, CancellationToken cancellationToken = default) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } using var scope = _clientDiagnostics.CreateScope("StorageAccount.GetAccountSAS"); scope.Start(); try { var response = await _storageAccountsRestClient.ListAccountSASAsync(Id.SubscriptionId, Id.ResourceGroupName, Id.Name, parameters, cancellationToken).ConfigureAwait(false); return(response); } catch (Exception e) { scope.Failed(e); throw; } }