private static BlobContainerSasPermissions ConvertPermissions(ContainerPermission permission) { BlobContainerSasPermissions blobPermissions = 0; if (permission.HasFlag(ContainerPermission.Read)) { blobPermissions |= BlobContainerSasPermissions.Read; } if (permission.HasFlag(ContainerPermission.Write)) { blobPermissions |= BlobContainerSasPermissions.Write; } if (permission.HasFlag(ContainerPermission.Delete)) { blobPermissions |= BlobContainerSasPermissions.Delete; } if (permission.HasFlag(ContainerPermission.List)) { blobPermissions |= BlobContainerSasPermissions.List; } return(blobPermissions); }
public Task SetPermissionAsync(ContainerPermission permission) { Contract.Requires(permission != ContainerPermission.Unspecified); Contract.Ensures(Contract.Result <Task>() != null); return(default(Task)); }
public async Task AzureStorageCreateAndDeleteContainer() { // Arrange await this._fixture.ContainersCleanup(); const ContainerPermission permission = ContainerPermission.Public; IStorage storage = new AzureBlobStorage(StorageConsts.ConnectionString); bool exceptionCaught = false; // Act var container1 = await storage.CreateOrGetContainerAsync(StorageConsts.Container1Name, permission, failIfExists : true); var container2 = await storage.GetContainerAsync(StorageConsts.Container1Name); IStorageContainer container3 = null; try { container3 = await storage.GetContainerAsync(StorageConsts.Container2Name); } catch (StorageException ex) { if (ex.Reason == StorageExceptionReason.ContainerNotFound) { exceptionCaught = true; } } catch (AggregateException ex) { // async exception can be aggregate if (ex.InnerExceptions.Any(e => e is StorageException)) { exceptionCaught = true; } } var resultPermission1 = await container1.GetPermissionAsync(); var resultPermission2 = await container2.GetPermissionAsync(); var containersList1 = await storage.GetContainersListAsync(StorageConsts.ContainerNamesPrefix); var containersList2 = await storage.GetContainersListAsync(StorageConsts.Container2Name.Substring(0, 12)); await storage.DeleteContainerAsync(StorageConsts.Container1Name); var containersList3 = await storage.GetContainersListAsync(StorageConsts.ContainerNamesPrefix); // Assert Assert.NotNull(container1); Assert.NotNull(container2); Assert.Null(container3); Assert.True(exceptionCaught); Assert.Equal(permission, resultPermission1); Assert.Equal(permission, resultPermission2); Assert.NotNull(containersList1); Assert.NotNull(containersList2); Assert.True(containersList1.Any()); Assert.True(!containersList2.Any()); Assert.Equal(1, containersList1.Count() - containersList3.Count()); }
public Task<IStorageContainer> CreateOrGetContainerAsync(string name, ContainerPermission permission, bool failIfExists) { Contract.Requires(!string.IsNullOrEmpty(name)); Contract.Requires(permission != ContainerPermission.Unspecified); Contract.Ensures(Contract.Result<Task<IStorageContainer>>() != null); return default(Task<IStorageContainer>); }
public Task <IStorageContainer> CreateOrGetContainerAsync(string name, ContainerPermission permission, bool failIfExists) { Contract.Requires(!string.IsNullOrEmpty(name)); Contract.Requires(permission != ContainerPermission.Unspecified); Contract.Ensures(Contract.Result <Task <IStorageContainer> >() != null); return(default(Task <IStorageContainer>)); }
public async Task<IStorageContainer> CreateOrGetContainerAsync(string name, ContainerPermission permission, bool failIfExist) { CloudBlobContainer container = this._blobClient.GetContainerReference(name.ToLower()); var isCreated = await container.CreateIfNotExistsAsync().ConfigureAwait(false); if (failIfExist && !isCreated) throw new FileWarehouse.StorageException(StorageExceptionReason.ContainerExistAlready, "Container exist already."); IStorageContainer storageContainer = new AzureBlobStorageContainer(container); await storageContainer.SetPermissionAsync(permission).ConfigureAwait(false); return storageContainer; }
public async Task SetPermissionAsync(ContainerPermission permission) { BlobContainerPublicAccessType accessType = permission.HasFlag(ContainerPermission.Public) ? BlobContainerPublicAccessType.Blob : BlobContainerPublicAccessType.Off; try { await this._blobContainer .SetPermissionsAsync(new BlobContainerPermissions { PublicAccess = accessType }) .ConfigureAwait(false); } catch (Exception e) { throw new StorageException(StorageExceptionReason.StorageOperationFailed, "Unable to set permissions for the storage.", e); } }
public async Task <IStorageContainer> CreateOrGetContainerAsync(string name, ContainerPermission permission, bool failIfExist) { CloudBlobContainer container = this._blobClient.GetContainerReference(name.ToLower()); var isCreated = await container.CreateIfNotExistsAsync().ConfigureAwait(false); if (failIfExist && !isCreated) { throw new FileWarehouse.StorageException(StorageExceptionReason.ContainerExistAlready, "Container exist already."); } IStorageContainer storageContainer = new AzureBlobStorageContainer(container); await storageContainer.SetPermissionAsync(permission).ConfigureAwait(false); return(storageContainer); }
public Task<IStorageContainer> CreateOrGetContainerAsync(string name, ContainerPermission permission, bool failIfExists) { string containerDir = $"{this._rootDirectory}\\{name}"; var dirExists = Directory.Exists(containerDir); if (!dirExists) Directory.CreateDirectory(containerDir); else if (failIfExists) throw new StorageException(StorageExceptionReason.ContainerExistAlready, "Container exist already."); var container = new FileSystemStorageContainer(containerDir); var tcs = new TaskCompletionSource<IStorageContainer>(); tcs.SetResult(container); return tcs.Task; }
public async Task AzureStorageModifyContainerPermission() { // Arrange await this._fixture.ContainersCleanup(); const ContainerPermission sourcePermission = ContainerPermission.Private; const ContainerPermission targetPermission = ContainerPermission.Public; IStorage storage = new AzureBlobStorage(StorageConsts.ConnectionString); var container = await storage.CreateOrGetContainerAsync(StorageConsts.Container1Name, sourcePermission, failIfExists : true); // Act await container.SetPermissionAsync(targetPermission); var resultPermission = await container.GetPermissionAsync(); // Assert Assert.Equal(targetPermission, resultPermission); }
public async Task AzureStorageTryCreateContainerWithEmptyName() { // Arrange await this._fixture.ContainersCleanup(); const ContainerPermission permission = ContainerPermission.Public; IStorage storage = new AzureBlobStorage(StorageConsts.ConnectionString); bool exceptionCaught = false; // Act try { await storage.CreateOrGetContainerAsync(null, permission, failIfExists : true); } catch (Exception) { exceptionCaught = true; } // Arrange Assert.True(exceptionCaught); }
public Task <IStorageContainer> CreateOrGetContainerAsync(string name, ContainerPermission permission, bool failIfExists) { string containerDir = $"{this._rootDirectory}\\{name}"; var dirExists = Directory.Exists(containerDir); if (!dirExists) { Directory.CreateDirectory(containerDir); } else if (failIfExists) { throw new StorageException(StorageExceptionReason.ContainerExistAlready, "Container exist already."); } var container = new FileSystemStorageContainer(containerDir); var tcs = new TaskCompletionSource <IStorageContainer>(); tcs.SetResult(container); return(tcs.Task); }
public Task SetPermissionAsync(ContainerPermission permission) { return this._successTask; }
public Task SetPermissionAsync(ContainerPermission permission) { Contract.Requires(permission != ContainerPermission.Unspecified); Contract.Ensures(Contract.Result<Task>() != null); return default(Task); }
public Task SetPermissionAsync(ContainerPermission permission) { return(this._successTask); }