/// <summary> /// Create a permissions string to provide /// <see cref="BlobSasBuilder.Permissions"/>. /// </summary> /// <returns>A permissions string.</returns> internal static string ToPermissionsString(this BlobVersionSasPermissions permissions) { var sb = new StringBuilder(); if ((permissions & BlobVersionSasPermissions.Delete) == BlobVersionSasPermissions.Delete) { sb.Append(Constants.Sas.Permissions.DeleteBlobVersion); } return(sb.ToString()); }
public BlobSasQueryParameters GetBlobVersionSas( string containerName, string blobName, string blobVersion, BlobVersionSasPermissions permissions, StorageSharedKeyCredential sharedKeyCredential = default, string sasVersion = default) { BlobSasBuilder sasBuilder = GetBlobSasBuilder(containerName, blobName, blobVersion: blobVersion, sasVersion: sasVersion); sasBuilder.SetPermissions(permissions); return sasBuilder.ToSasQueryParameters(sharedKeyCredential ?? GetNewSharedKeyCredentials()); }
public BlobSasQueryParameters GetBlobVersionIdentitySas( string containerName, string blobName, string blobVersion, BlobVersionSasPermissions permissions, UserDelegationKey userDelegationKey, string accountName, string sasVersion = default) { BlobSasBuilder sasBuilder = GetBlobSasBuilder(containerName, blobName, blobVersion: blobVersion, sasVersion: sasVersion); sasBuilder.SetPermissions(permissions); return sasBuilder.ToSasQueryParameters(userDelegationKey, accountName); }
public async Task SetImmutibilityPolicyAsync_SetLegalHold_BlobVersionSas(BlobVersionSasPermissions sasPermissions) { // Arrange await using DisposingImmutableStorageWithVersioningContainer vlwContainer = await GetTestVersionLevelWormContainer(TestConfigOAuth); BlobBaseClient blob = await GetNewBlobClient(vlwContainer.Container, GetNewBlobName()); IDictionary <string, string> metadata = BuildMetadata(); Response <BlobInfo> metadataResponse = await blob.SetMetadataAsync(metadata); BlobSasBuilder blobSasBuilder = new BlobSasBuilder { BlobContainerName = vlwContainer.Container.Name, BlobName = blob.Name, ExpiresOn = Recording.UtcNow.AddDays(1), Version = metadataResponse.Value.VersionId }; blobSasBuilder.SetPermissions(sasPermissions); StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(TestConfigOAuth.AccountName, TestConfigOAuth.AccountKey); BlobUriBuilder uriBuilder = new BlobUriBuilder(blob.Uri) { VersionId = metadataResponse.Value.VersionId, Sas = blobSasBuilder.ToSasQueryParameters(sharedKeyCredential) }; BlobBaseClient sasBlobSnapshotClient = InstrumentClient(new BlobBaseClient(uriBuilder.ToUri(), GetOptions())); BlobImmutabilityPolicy immutabilityPolicy = new BlobImmutabilityPolicy { ExpiresOn = Recording.UtcNow.AddMinutes(5), PolicyMode = BlobImmutabilityPolicyMode.Unlocked }; // The service rounds Immutability Policy Expiry to the nearest second. DateTimeOffset expectedImmutabilityPolicyExpiry = RoundToNearestSecond(immutabilityPolicy.ExpiresOn.Value); // Act Response <BlobImmutabilityPolicy> response = await sasBlobSnapshotClient.SetImmutabilityPolicyAsync( immutabilityPolicy : immutabilityPolicy); // Assert Assert.AreEqual(expectedImmutabilityPolicyExpiry, response.Value.ExpiresOn); Assert.AreEqual(immutabilityPolicy.PolicyMode, response.Value.PolicyMode); // Act Response <BlobLegalHoldResult> legalHoldResponse = await sasBlobSnapshotClient.SetLegalHoldAsync(hasLegalHold : false); // Assert Assert.IsFalse(legalHoldResponse.Value.HasLegalHold); }
/// <summary> /// Sets the permissions for a Version SAS. /// </summary> /// <param name="permissions"> /// <see cref="SnapshotSasPermissions"/> containing the allowed permissions. /// </param> public void SetPermissions(BlobVersionSasPermissions permissions) { Permissions = permissions.ToPermissionsString(); }