From 052a784fbe56ac62f2185e908247174c7b7795e8 Mon Sep 17 00:00:00 2001
From: xuty <xty50337@hotmail.com>
Date: Sat, 14 Aug 2021 00:30:59 +0000
Subject: [PATCH] replace ByteStream with MinioByteStream

---
 CHANGELOG.md              |  3 +++
 README.md                 | 23 +++++++++++++++++++++++
 lib/minio.dart            |  1 +
 lib/src/minio_stream.dart | 10 ++++++++++
 4 files changed, 37 insertions(+)
 create mode 100644 lib/src/minio_stream.dart

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 318a3f2..24f18e1 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 6876fb4..f2e62ba 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 113198e..c4333be 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 0000000..3c2f83d
--- /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;
+}
-- 
GitLab