Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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
                       ));
        }
Exemplo n.º 6
0
        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
                       ));
        }