Пример #1
0
        public async Task DownloadAsync(string fileName, Stream stream, BytesRange range = default,
                                        CancellationToken ct = default)
        {
            Guard.NotNull(stream, nameof(stream));

            var key = GetKey(fileName, nameof(fileName));

            try
            {
                var request = new GetObjectRequest
                {
                    BucketName = options.Bucket,
                    Key        = key
                };

                if (range.IsDefined)
                {
                    request.ByteRange = new ByteRange(range.ToString());
                }

                using (var response = await s3Client.GetObjectAsync(request, ct))
                {
                    await response.ResponseStream.CopyToAsync(stream, BufferSize, ct);
                }
            }
            catch (AmazonS3Exception ex) when(ex.StatusCode == HttpStatusCode.NotFound)
            {
                throw new AssetNotFoundException(fileName, ex);
            }
        }
Пример #2
0
 private static void TestBytesRange(BytesRange sut, long?from, long?to, long length, bool defined, string formatted)
 {
     Assert.Equal(from, sut.From);
     Assert.Equal(to, sut.To);
     Assert.Equal(length, sut.Length);
     Assert.Equal(defined, sut.IsDefined);
     Assert.Equal(formatted, sut.ToString());
 }