public override async Task <string> GetAccessUrlAsync(FileProviderAccessArgs args) { var container = await DatabaseFileContainerRepository.FindAsync( args.ContainerName, args.CancellationToken ); if (container == null) { return(string.Empty); } if (!container.HttpSupport) { return(string.Empty); } var file = await DatabaseFileRepository.FindAsync( container.Id, args.FileId, args.CancellationToken); if (file == null) { return(string.Empty); } return(BuildAccessUrl(container, file.Name)); }
public override async Task <bool> DownloadAsync(FileProviderDownloadArgs args) { var container = await DatabaseFileContainerRepository.FindAsync( args.ContainerName, args.CancellationToken ); if (container == null) { return(false); } var file = await DatabaseFileRepository.FindAsync( container.Id, args.FileId, args.CancellationToken ); if (file == null) { return(false); } using (var fs = new FileStream(args.Path, FileMode.OpenOrCreate, FileAccess.ReadWrite)) { await fs.WriteAsync(file.Content, 0, file.Content.Length); } return(true); }
public override async Task <Stream> GetOrNullAsync(FileProviderGetArgs args) { var container = await DatabaseFileContainerRepository.FindAsync( args.ContainerName, args.CancellationToken ); if (container == null) { return(null); } var file = await DatabaseFileRepository.FindAsync( container.Id, args.FileId, args.CancellationToken ); if (file == null) { return(null); } return(new MemoryStream(file.Content)); }
protected virtual async Task <DatabaseFileContainer> GetOrCreateContainerAsync( string name, CancellationToken cancellationToken = default) { var container = await DatabaseFileContainerRepository.FindAsync(name, cancellationToken); if (container != null) { return(container); } container = new DatabaseFileContainer(GuidGenerator.Create(), name, CurrentTenant.Id); await DatabaseFileContainerRepository.InsertAsync(container, cancellationToken : cancellationToken); return(container); }
public override async Task <bool> ExistsAsync(FileProviderExistsArgs args) { var container = await DatabaseFileContainerRepository.FindAsync( args.ContainerName, args.CancellationToken ); if (container == null) { return(false); } return(await DatabaseFileRepository.ExistsAsync( container.Id, args.FileId, args.CancellationToken )); }
public override async Task <bool> DeleteAsync(FileProviderDeleteArgs args) { var container = await DatabaseFileContainerRepository.FindAsync( args.ContainerName, args.CancellationToken ); if (container == null) { return(false); } return(await DatabaseFileRepository.DeleteAsync( container.Id, args.FileId, autoSave : true, cancellationToken : args.CancellationToken )); }