Exemple #1
0
        /// <inheritdoc />
        public async override Task DeleteFileAsync(string tableName, string recordId, string fileName, IContainerNameResolver containerNameResolver)
        {
            if (tableName == null)
            {
                throw new ArgumentException(nameof(tableName));
            }

            if (recordId == null)
            {
                throw new ArgumentException(nameof(recordId));
            }

            if (fileName == null)
            {
                throw new ArgumentException(nameof(fileName));
            }

            if (containerNameResolver == null)
            {
                throw new ArgumentNullException(nameof(containerNameResolver));
            }

            string containerName = await containerNameResolver.GetFileContainerNameAsync(tableName, recordId, fileName);

            CloudBlobContainer container = GetContainer(containerName);

            CloudBlockBlob blob = container.GetBlockBlobReference(fileName);
            await blob.DeleteIfExistsAsync();
        }
Exemple #2
0
        /// <inheritdoc />
        public async override Task <StorageToken> GetAccessTokenAsync(StorageTokenRequest request, StorageTokenScope scope, IContainerNameResolver containerNameResolver)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            if (containerNameResolver == null)
            {
                throw new ArgumentNullException(nameof(containerNameResolver));
            }

            string containerName = await containerNameResolver.GetFileContainerNameAsync(request.TargetFile.TableName, request.TargetFile.ParentId, request.TargetFile.Name);

            CloudBlobContainer container = GetContainer(containerName);

            var constraints = new SharedAccessBlobPolicy();

            constraints.SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1);
            constraints.Permissions            = GetBlobAccessPermissions(request.Permissions);

            string sas         = null;
            Uri    resourceUri = null;

            if (scope == StorageTokenScope.File)
            {
                CloudBlockBlob blob = container.GetBlockBlobReference(request.TargetFile.Name);

                resourceUri = blob.Uri;
                sas         = blob.GetSharedAccessSignature(constraints);
            }
            else if (scope == StorageTokenScope.Record)
            {
                resourceUri = container.Uri;
                sas         = container.GetSharedAccessSignature(constraints);
            }

            var storageToken = new StorageToken(resourceUri, request.TargetFile.ParentId, request.Permissions, scope, sas);

            return(storageToken);
        }