Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
     }
 }
Ejemplo n.º 4
0
        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);
     }
 }
Ejemplo n.º 6
0
 /// <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;
            }
        }
Ejemplo n.º 9
0
 public string createSasToken(string resourceGroupName, string accountName, ServiceSasParameters parameters)
 {
     return(Extensions.Synchronize(() => createSasTokenAsync(resourceGroupName, accountName, parameters)));
 }
Ejemplo n.º 10
0
 public async Task <string> createSasTokenAsync(string resourceGroupName, string accountName, ServiceSasParameters parameters)
 {
     return((await Inner.ListServiceSASAsync(resourceGroupName, accountName, parameters)).ServiceSasToken);
 }