示例#1
0
        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);
        }
示例#3
0
        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);
     }
 }
示例#7
0
 /// <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;
            }
        }