/// <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); }
/// <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); }
/// <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)); }