| Index: pkg/http/lib/src/byte_stream.dart
|
| diff --git a/pkg/http/lib/src/byte_stream.dart b/pkg/http/lib/src/byte_stream.dart
|
| index 181d410542d71b75534481157928bd6511d2fc6b..d4e7f70b57e559356d4e022e3fdda2d3ad8400dc 100644
|
| --- a/pkg/http/lib/src/byte_stream.dart
|
| +++ b/pkg/http/lib/src/byte_stream.dart
|
| @@ -6,7 +6,6 @@ library byte_stream;
|
|
|
| import 'dart:async';
|
| import 'dart:convert';
|
| -import 'dart:io';
|
| import 'dart:typed_data';
|
|
|
| import 'utils.dart';
|
| @@ -14,24 +13,27 @@ import 'utils.dart';
|
| /// A stream of chunks of bytes representing a single piece of data.
|
| class ByteStream extends StreamView<List<int>> {
|
| ByteStream(Stream<List<int>> stream)
|
| - : super(stream);
|
| + : super(stream);
|
|
|
| /// Returns a single-subscription byte stream that will emit the given bytes
|
| /// in a single chunk.
|
| factory ByteStream.fromBytes(List<int> bytes) =>
|
| - new ByteStream(streamFromIterable([bytes]));
|
| + new ByteStream(streamFromIterable([bytes]));
|
|
|
| /// Collects the data of this stream in a [Uint8List].
|
| Future<Uint8List> toBytes() {
|
| - return fold(new BytesBuilder(), (builder, chunk) => builder..add(chunk))
|
| - .then((builder) => builder.takeBytes());
|
| + var completer = new Completer();
|
| + var sink = new ByteConversionSink.withCallback(completer.complete);
|
| + listen(sink.add, onError: completer.completeError, onDone: sink.close,
|
| + cancelOnError: true);
|
| + return completer.future;
|
| }
|
|
|
| /// Collect the data of this stream in a [String], decoded according to
|
| /// [encoding], which defaults to `UTF8`.
|
| Future<String> bytesToString([Encoding encoding=UTF8]) =>
|
| - toBytes().then((bytes) => encoding.decode(bytes));
|
| + encoding.decodeStream(this);
|
|
|
| Stream<String> toStringStream([Encoding encoding=UTF8]) =>
|
| - transform(encoding.decoder);
|
| + transform(encoding.decoder);
|
| }
|
|
|