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); } }
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()); }