示例#1
0
    public override async Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
    {
        var blobName      = MinioBlobNameCalculator.Calculate(args);
        var client        = GetMinioClient(args);
        var containerName = GetContainerName(args);

        if (!await BlobExistsAsync(client, containerName, blobName))
        {
            return(null);
        }

        var memoryStream = new MemoryStream();
        await client.GetObjectAsync(containerName, blobName, (stream) =>
        {
            if (stream != null)
            {
                stream.CopyTo(memoryStream);
                memoryStream.Seek(0, SeekOrigin.Begin);
            }
            else
            {
                memoryStream = null;
            }
        });

        return(memoryStream);
    }
示例#2
0
        public override async Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
        {
            var container = await DatabaseBlobContainerRepository.FindAsync(
                args.ContainerName,
                args.CancellationToken
                );

            if (container == null)
            {
                return(null);
            }

            var blob = await DatabaseBlobRepository.FindAsync(
                container.Id,
                args.BlobName,
                args.CancellationToken
                );

            if (blob == null)
            {
                return(null);
            }

            return(new MemoryStream(blob.Content));
        }
        public override Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
        {
            var filePath = FilePathCalculator.Calculate(args);

            if (!File.Exists(filePath))
            {
                return(Task.FromResult <Stream>(null));
            }

            return(Task.FromResult <Stream>(File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)));
        }
示例#4
0
        public override async Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
        {
            var blobName      = TencentCloudBlobNameCalculator.Calculate(args);
            var containerName = GetContainerName(args);
            var client        = GetClient(args);

            if (!await client.CheckObjectIsExistAsync(containerName, blobName))
            {
                return(null);
            }

            return(await client.DownloadObjectAsync(containerName, blobName));
        }
示例#5
0
    public override async Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
    {
        var containerName = GetContainerName(args);
        var blobName      = AliyunBlobNameCalculator.Calculate(args);
        var ossClient     = GetOssClient(args.Configuration);

        if (!BlobExists(ossClient, containerName, blobName))
        {
            return(null);
        }
        var result = ossClient.GetObject(containerName, blobName);

        return(await TryCopyToMemoryStreamAsync(result.Content, args.CancellationToken));
    }
示例#6
0
    public override async Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
    {
        var blobName = AzureBlobNameCalculator.Calculate(args);

        if (!await BlobExistsAsync(args, blobName))
        {
            return(null);
        }

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

        return(await TryCopyToMemoryStreamAsync(download.Value.Content, args.CancellationToken));
    }
        public override async Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
        {
            var blobName = BlobNameCalculator.Calculate(args);

            if (!await BlobExistsAsync(args, blobName))
            {
                return(null);
            }
            var result = GetClient(args).GetObject(new GetObjectBytesRequest(args.ContainerName, blobName));

            var memoryStream = new MemoryStream();
            await memoryStream.WriteAsync(result.content, 0, result.content.Length);

            return(memoryStream);
        }
示例#8
0
        public async override Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
        {
            var containerName = GetContainerName(args);
            var blobName      = AliyunBlobNameCalculator.Calculate(args);
            var ossClient     = GetOssClient(args.Configuration);

            if (!BlobExists(ossClient, containerName, blobName))
            {
                return(null);
            }
            var result       = ossClient.GetObject(containerName, blobName);
            var memoryStream = new MemoryStream();
            await result.Content.CopyToAsync(memoryStream);

            return(memoryStream);
        }
        public override async Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
        {
            var blobName = AliyunBlobNameCalculator.Calculate(args);

            if (!await BlobExistsAsync(args, blobName))
            {
                return(null);
            }

            var ossClient    = GetOssClient(args);
            var ossObject    = ossClient.GetObject(GetBucketName(args), blobName);
            var memoryStream = new MemoryStream();
            await ossObject.Content.CopyToAsync(memoryStream);

            return(memoryStream);
        }
示例#10
0
        public override async Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
        {
            var blobName = AzureBlobNameCalculator.Calculate(args);

            if (!await BlobExistsAsync(args, blobName))
            {
                return(null);
            }

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

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

            return(memoryStream);
        }
示例#11
0
    public override async Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
    {
        var filePath = FilePathCalculator.Calculate(args);

        if (!File.Exists(filePath))
        {
            return(null);
        }

        return(await Policy.Handle <IOException>()
               .WaitAndRetryAsync(2, retryCount => TimeSpan.FromSeconds(retryCount))
               .ExecuteAsync(async() =>
        {
            using (var fileStream = File.OpenRead(filePath))
            {
                return await TryCopyToMemoryStreamAsync(fileStream, args.CancellationToken);
            }
        }));
    }
示例#12
0
    public override async Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
    {
        var blobName      = MinioBlobNameCalculator.Calculate(args);
        var client        = GetMinioClient(args);
        var containerName = GetContainerName(args);

        if (!await BlobExistsAsync(client, containerName, blobName))
        {
            return(null);
        }

        Stream blobStream = null;
        await client.GetObjectAsync(containerName, blobName, (stream) =>
        {
            blobStream = stream;
        });

        return(await TryCopyToMemoryStreamAsync(blobStream, args.CancellationToken));
    }
示例#13
0
    public override async Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
    {
        var blobName      = AwsBlobNameCalculator.Calculate(args);
        var containerName = GetContainerName(args);

        using (var amazonS3Client = await GetAmazonS3Client(args))
        {
            if (!await BlobExistsAsync(amazonS3Client, containerName, blobName))
            {
                return(null);
            }

            var response = await amazonS3Client.GetObjectAsync(new GetObjectRequest
            {
                BucketName = containerName,
                Key        = blobName
            });

            return(await TryCopyToMemoryStreamAsync(response.ResponseStream, args.CancellationToken));
        }
    }
示例#14
0
        public async override Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
        {
            var blobName      = AwsBlobNameCalculator.Calculate(args);
            var containerName = GetContainerName(args);

            using (var amazonS3Client = await GetAmazonS3Client(args))
            {
                if (!await BlobExistsAsync(amazonS3Client, containerName, blobName))
                {
                    return(null);
                }

                var response = await amazonS3Client.GetObjectAsync(new GetObjectRequest
                {
                    BucketName = containerName,
                    Key        = blobName
                });

                var memoryStream = new MemoryStream();
                await response.ResponseStream.CopyToAsync(memoryStream);

                return(memoryStream);
            }
        }
示例#15
0
 public virtual Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
 {
     throw new System.NotImplementedException();
 }
示例#16
0
 public override Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
 {
     throw new NotImplementedException();
 }
 public override Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
 {
     //TODO...
     return(null);
 }
示例#18
0
 public abstract Task <Stream> GetOrNullAsync(BlobProviderGetArgs args);