示例#1
0
    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));
        }
示例#3
0
        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;
        }
示例#7
0
        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 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);
            }
        }
示例#9
0
        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;
        }
示例#11
0
        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);
        }
示例#12
0
        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);
        }
示例#13
0
        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);
        }
示例#16
0
 public Task SetPermissionAsync(ContainerPermission permission)
 {
     return(this._successTask);
 }