public override async Task <bool> DeleteAsync(FileProviderDeleteArgs args)
        {
            var fileName = AzureFileNameCalculator.Calculate(args);

            if (await FileExistsAsync(args, fileName))
            {
                return(await GetBlobClient(args, fileName).DeleteIfExistsAsync());
            }

            return(false);
        }
        public override async Task <bool> DownloadAsync(FileProviderDownloadArgs args)
        {
            var fileName = AzureFileNameCalculator.Calculate(args);

            if (!await FileExistsAsync(args, fileName))
            {
                return(false);
            }
            var blobClient = GetBlobClient(args, fileName);
            var download   = await blobClient.DownloadToAsync(args.Path, args.CancellationToken);

            return(download.Status == (int)HttpStatusCode.OK);
        }
        public override async Task <Stream> GetOrNullAsync(FileProviderGetArgs args)
        {
            var fileName = AzureFileNameCalculator.Calculate(args);

            if (!await FileExistsAsync(args, fileName))
            {
                return(null);
            }

            var blobClient = GetBlobClient(args, fileName);
            var download   = await blobClient.DownloadAsync(args.CancellationToken);

            var memoryStream = new MemoryStream();
            await download.Value.Content.CopyToAsync(memoryStream);

            return(memoryStream);
        }
        public override async Task <string> SaveAsync(FileProviderSaveArgs args)
        {
            var fileName      = AzureFileNameCalculator.Calculate(args);
            var configuration = args.Configuration.GetAzureConfiguration();

            if (!args.OverrideExisting && await FileExistsAsync(args, fileName))
            {
                throw new FileAlreadyExistsException($"Saving File '{args.FileId}' does already exists in the container '{GetContainerName(args)}'! Set {nameof(args.OverrideExisting)} if it should be overwritten.");
            }

            if (configuration.CreateContainerIfNotExists)
            {
                await CreateContainerIfNotExists(args);
            }

            await GetBlobClient(args, fileName).UploadAsync(args.FileStream, true);

            return(args.FileId);
        }
        public override async Task <bool> ExistsAsync(FileProviderExistsArgs args)
        {
            var fileName = AzureFileNameCalculator.Calculate(args);

            return(await FileExistsAsync(args, fileName));
        }