diff --git a/CHANGELOG.md b/CHANGELOG.md index 318a3f2ca7fb726b1b6a5b39e0be51cc61a39b8b..24f18e16f2eeb85bc1647c80b72770f4d6a0db24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# 2.1.0-pre +- `getObject` now returns `MinioByteStream` with an additional `contentLength` field. + ## 2.0.0-pre - Migrate to NNBD diff --git a/README.md b/README.md index 6876fb4cb728f2ee4b7eb5b7b3c4250a603944d3..f2e62ba6d29db3b617f4d956a706dc82fabf3349 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,29 @@ For complete example, see: [example] > To use `fPutObject()` and `fGetObject`, you have to `import 'package:minio/io.dart';` +**Get object** + +```dart +import 'dart:io'; +import 'package:minio/minio.dart'; + +void main() async { + final minio = Minio( + endPoint: 's3.amazonaws.com', + accessKey: 'YOUR-ACCESSKEYID', + secretKey: 'YOUR-SECRETACCESSKEY', + ); + + final stream = await minio.getObject('BUCKET-NAME', 'OBJECT-NAME'); + + // Get object length + print(stream.contentLength); + + // Write object data stream to file + await stream.pipe(File('output.txt').openWrite()); +} +``` + ## Features and bugs Please file feature requests and bugs at the [issue tracker][tracker]. diff --git a/lib/minio.dart b/lib/minio.dart index 113198ef31fe5e9a2a581dcb2ec1d5b10ac4f3a7..c4333be2a8b99daec627e4a6691be798cd1da822 100644 --- a/lib/minio.dart +++ b/lib/minio.dart @@ -2,5 +2,6 @@ library minio; export 'src/minio.dart'; export 'src/minio_errors.dart'; +export 'src/minio_stream.dart'; // TODO: Export any libraries intended for clients of this package. diff --git a/lib/src/minio_stream.dart b/lib/src/minio_stream.dart new file mode 100644 index 0000000000000000000000000000000000000000..3c2f83d8ba00a4ffed22fd6e0aea7263f3bca1ba --- /dev/null +++ b/lib/src/minio_stream.dart @@ -0,0 +1,10 @@ +import 'dart:async'; + +class MinioByteStream extends StreamView<List<int>> { + MinioByteStream.fromStream({ + required Stream<List<int>> stream, + required this.contentLength, + }) : super(stream); + + final int? contentLength; +}