public async Task ListServiceSAS() { //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; string canonicalizedResourceParameter = "/blob/" + accountName + "/music"; ServiceSasParameters serviceSasParameters = new ServiceSasParameters(canonicalizedResource: canonicalizedResourceParameter) { Resource = "c", Permissions = "rdwlacup", Protocols = HttpProtocol.HttpsHttp, SharedAccessStartTime = Recording.UtcNow, SharedAccessExpiryTime = Recording.UtcNow.AddHours(1), KeyToSign = "key1" }; Response <ListServiceSasResponse> result = await account.GetServiceSASAsync(serviceSasParameters); ServiceSasParameters resultCredentials = ParseServiceSASToken(result.Value.ServiceSasToken, canonicalizedResourceParameter); Assert.AreEqual(serviceSasParameters.Resource, resultCredentials.Resource); Assert.AreEqual(serviceSasParameters.Permissions, resultCredentials.Permissions); Assert.AreEqual(serviceSasParameters.Protocols, resultCredentials.Protocols); Assert.NotNull(serviceSasParameters.SharedAccessStartTime); Assert.NotNull(serviceSasParameters.SharedAccessExpiryTime); }
public virtual Response <ListServiceSasResponse> GetServiceSAS(ServiceSasParameters parameters, CancellationToken cancellationToken = default) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } using var scope = _clientDiagnostics.CreateScope("StorageAccount.GetServiceSAS"); scope.Start(); try { var response = _restClient.GetServiceSAS(Id.ResourceGroupName, Id.Name, parameters, cancellationToken); return(response); } catch (Exception e) { scope.Failed(e); throw; } }
public virtual Response <ListServiceSasResponse> ListServiceSAS(string resourceGroupName, string accountName, ServiceSasParameters parameters, CancellationToken cancellationToken = default) { using var scope = _clientDiagnostics.CreateScope("StorageAccountsClient.ListServiceSAS"); scope.Start(); try { return(RestClient.ListServiceSAS(resourceGroupName, accountName, parameters, cancellationToken)); } catch (Exception e) { scope.Failed(e); throw; } }
public static ServiceSasParameters ParseServiceSASToken(string serviceSAS, string canonicalizedResource) { string[] sasProperties = serviceSAS.Substring(1).Split(new char[] { '&' }); ServiceSasParameters parameters = new ServiceSasParameters(canonicalizedResource); foreach (var property in sasProperties) { string[] keyValue = property.Split(new char[] { '=' }); switch (keyValue[0]) { case "sr": parameters.Resource = 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; case "si": parameters.Identifier = keyValue[1]; break; case "spk": parameters.PartitionKeyStart = keyValue[1]; break; case "epk": parameters.PartitionKeyEnd = keyValue[1]; break; case "srk": parameters.RowKeyStart = keyValue[1]; break; case "erk": parameters.RowKeyEnd = keyValue[1]; break; case "rscc": parameters.CacheControl = keyValue[1]; break; case "rscd": parameters.ContentDisposition = keyValue[1]; break; case "rsce": parameters.ContentEncoding = keyValue[1]; break; case "rscl": parameters.ContentLanguage = keyValue[1]; break; case "rsct": parameters.ContentType = keyValue[1]; break; default: break; } } return(parameters); }
/// <summary> /// List service SAS credentials of a specific resource. /// </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 service SAS credentials. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <ListServiceSasResponseInner> ListServiceSASAsync(this IStorageAccountsOperations operations, string resourceGroupName, string accountName, ServiceSasParameters parameters, CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.ListServiceSASWithHttpMessagesAsync(resourceGroupName, accountName, parameters, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
/// <summary> /// List service SAS credentials of a specific resource. /// </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 service SAS credentials. /// </param> public static ListServiceSasResponse ListServiceSAS(this IStorageAccountsOperations operations, string resourceGroupName, string accountName, ServiceSasParameters parameters) { return(operations.ListServiceSASAsync(resourceGroupName, accountName, parameters).GetAwaiter().GetResult()); }
public virtual async Task <Response <ListServiceSasResponse> > ListServiceSASAsync(string resourceGroupName, string accountName, ServiceSasParameters parameters, CancellationToken cancellationToken = default) { using var scope = _clientDiagnostics.CreateScope("StorageAccountsOperations.ListServiceSAS"); scope.Start(); try { return(await RestClient.ListServiceSASAsync(resourceGroupName, accountName, parameters, cancellationToken).ConfigureAwait(false)); } catch (Exception e) { scope.Failed(e); throw; } }
public async virtual Task <Response <ListServiceSasResponse> > GetServiceSASAsync(ServiceSasParameters parameters, CancellationToken cancellationToken = default) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } using var scope = _clientDiagnostics.CreateScope("StorageAccount.GetServiceSAS"); scope.Start(); try { var response = await _storageAccountsRestClient.ListServiceSASAsync(Id.SubscriptionId, Id.ResourceGroupName, Id.Name, parameters, cancellationToken).ConfigureAwait(false); return(response); } catch (Exception e) { scope.Failed(e); throw; } }
public string createSasToken(string resourceGroupName, string accountName, ServiceSasParameters parameters) { return(Extensions.Synchronize(() => createSasTokenAsync(resourceGroupName, accountName, parameters))); }
public async Task <string> createSasTokenAsync(string resourceGroupName, string accountName, ServiceSasParameters parameters) { return((await Inner.ListServiceSASAsync(resourceGroupName, accountName, parameters)).ServiceSasToken); }