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