/// <summary>
 /// Gets a <see cref="TableAccountSasBuilder"/> instance scoped to the current table.
 /// </summary>
 /// <param name="rawPermissions">The permissions associated with the shared access signature. This string should contain one or more of the following permission characters in this order: "racwdl".</param>
 /// <param name="resourceTypes"><see cref="TableAccountSasResourceTypes"/> containing the accessible resource types.</param>
 /// <param name="expiresOn">The time at which the shared access signature becomes invalid.</param>
 /// <returns>An instance of <see cref="TableAccountSasBuilder"/>.</returns>
 public virtual TableAccountSasBuilder GetSasBuilder(string rawPermissions, TableAccountSasResourceTypes resourceTypes, DateTimeOffset expiresOn)
 {
     return(new TableAccountSasBuilder(rawPermissions, resourceTypes, expiresOn)
     {
         Version = _version
     });
 }
        /// <summary>
        /// Initializes an instance of a <see cref="TableAccountSasBuilder"/>.
        /// </summary>
        /// <param name="rawPermissions">The permissions associated with the shared access signature. This string should contain one or more of the following permission characters in this order: "racwdl".</param>
        /// <param name="resourceTypes"><see cref="TableAccountSasResourceTypes"/> containing the accessible resource types.</param>
        /// <param name="expiresOn">The time at which the shared access signature becomes invalid.</param>
        public TableAccountSasBuilder(string rawPermissions, TableAccountSasResourceTypes resourceTypes, DateTimeOffset expiresOn)
        {
            Argument.AssertNotNullOrEmpty(rawPermissions, nameof(rawPermissions));

            ExpiresOn     = expiresOn;
            Permissions   = rawPermissions;
            ResourceTypes = resourceTypes;
        }
        public void GenerateSasUri(TableServiceClient client, TableSharedKeyCredential cred)
        {
            TableAccountSasPermissions   permissions   = TableAccountSasPermissions.Add;
            TableAccountSasResourceTypes resourceTypes = TableAccountSasResourceTypes.Container;
            var expires     = DateTime.Now.AddDays(1);
            var expectedSas = new TableAccountSasBuilder(permissions, resourceTypes, expires).Sign(cred);

            var actualSas = client.GenerateSasUri(permissions, resourceTypes, expires);

            Assert.AreEqual("?" + expectedSas, actualSas.Query);
        }
Example #4
0
        /// <summary>
        /// Parse a string representing which resource types are accessible
        /// from a shared access signature.
        /// </summary>
        /// <param name="s">
        /// A string representing which resource types are accessible.
        /// </param>
        /// <returns>
        /// An <see cref="TableAccountSasResourceTypes"/> instance.
        /// </returns>
        /// <remarks>
        /// The order here matches the order used by the portal when generating SAS signatures.
        /// </remarks>
        internal static TableAccountSasResourceTypes ParseResourceTypes(string s)
        {
            TableAccountSasResourceTypes types = default;

            foreach (var ch in s)
            {
                types |= ch switch
                {
                    TableConstants.Sas.TableAccountResources.Service => TableAccountSasResourceTypes.Service,
                    TableConstants.Sas.TableAccountResources.Container => TableAccountSasResourceTypes.Container,
                    TableConstants.Sas.TableAccountResources.Object => TableAccountSasResourceTypes.Object,
                    _ => throw Errors.InvalidResourceType(ch),
                };
            }
            return(types);
        }
Example #5
0
        /// <summary>
        /// Creates a string representing which resource types are allowed
        /// for <see cref="TableAccountSasBuilder.ResourceTypes"/>.
        /// </summary>
        /// <returns>
        /// A string representing which resource types are allowed.
        /// </returns>
        /// <remarks>
        /// The order here matches the order used by the portal when generating SAS signatures.
        /// </remarks>
        internal static string ToPermissionsString(this TableAccountSasResourceTypes resourceTypes)
        {
            var sb = new StringBuilder();

            if ((resourceTypes & TableAccountSasResourceTypes.Service) == TableAccountSasResourceTypes.Service)
            {
                sb.Append(TableConstants.Sas.TableAccountResources.Service);
            }
            if ((resourceTypes & TableAccountSasResourceTypes.Container) == TableAccountSasResourceTypes.Container)
            {
                sb.Append(TableConstants.Sas.TableAccountResources.Container);
            }
            if ((resourceTypes & TableAccountSasResourceTypes.Object) == TableAccountSasResourceTypes.Object)
            {
                sb.Append(TableConstants.Sas.TableAccountResources.Object);
            }
            return(sb.ToString());
        }
 /// <summary>
 /// Initializes an instance of a <see cref="TableAccountSasBuilder"/>.
 /// </summary>
 /// <param name="rawPermissions">The permissions associated with the shared access signature. This string should contain one or more of the following permission characters in this order: "racwdl".</param>
 /// <param name="resourceTypes"><see cref="TableAccountSasResourceTypes"/> containing the accessible resource types.</param>
 /// <param name="expiresOn">The time at which the shared access signature becomes invalid.</param>
 public TableAccountSasBuilder(string rawPermissions, TableAccountSasResourceTypes resourceTypes, DateTimeOffset expiresOn)
 {
     ExpiresOn     = expiresOn;
     Permissions   = rawPermissions;
     ResourceTypes = resourceTypes;
 }
 /// <summary>
 /// Initializes an instance of a <see cref="TableAccountSasBuilder"/>.
 /// </summary>
 /// <param name="permissions">The permissions associated with the shared access signature.</param>
 /// <param name="resourceTypes"><see cref="TableAccountSasResourceTypes"/> containing the accessible resource types.</param>
 /// <param name="expiresOn">The time at which the shared access signature becomes invalid.</param>
 public TableAccountSasBuilder(TableAccountSasPermissions permissions, TableAccountSasResourceTypes resourceTypes, DateTimeOffset expiresOn)
 {
     ExpiresOn = expiresOn;
     SetPermissions(permissions);
     ResourceTypes = resourceTypes;
 }
        public void SetPermissions(string permissionsString, TableAccountSasPermissions permissions, TableAccountSasResourceTypes resourceTypes)
        {
            var TableAccountSasBuilder = new TableAccountSasBuilder(permissionsString, resourceTypes, DateTimeOffset.Now);

            Assert.That(TableAccountSasBuilder.Permissions, Is.EqualTo(permissionsString));

            TableAccountSasBuilder.SetPermissions(permissions);

            Assert.That(TableAccountSasBuilder.Permissions, Is.EqualTo(permissionsString));
        }