Chromium Code Reviews| Index: pkg/http_server/lib/src/http_body_impl.dart |
| diff --git a/sdk/lib/io/http_body_impl.dart b/pkg/http_server/lib/src/http_body_impl.dart |
| similarity index 91% |
| rename from sdk/lib/io/http_body_impl.dart |
| rename to pkg/http_server/lib/src/http_body_impl.dart |
| index 2eaf07bd791b9e66290e04a28621b464edb2929f..5d52874b1bd4baf89e8bd64ae278db467ad341df 100644 |
| --- a/sdk/lib/io/http_body_impl.dart |
| +++ b/pkg/http_server/lib/src/http_body_impl.dart |
| @@ -2,7 +2,7 @@ |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| -part of dart.io; |
| +part of http_server; |
| class _HttpBodyHandlerTransformer |
| extends StreamEventTransformer<HttpRequest, HttpRequestBody> { |
| @@ -150,6 +150,24 @@ class _HttpBodyHandler { |
| return asBinary(); |
| } |
| + |
| + // Utility function to synchronously decode a list of bytes. |
| + static String _decodeString(List<int> bytes, |
| + [Encoding encoding = Encoding.UTF_8]) { |
| + if (bytes.length == 0) return ""; |
| + var string; |
| + var error; |
| + var controller = new StreamController(sync: true); |
| + controller.stream |
| + .transform(new StringDecoder(encoding)) |
| + .listen((data) => string = data, |
|
Bill Hesse
2013/07/12 11:43:33
What about an input that ends in half of an encode
Anders Johnsen
2013/07/15 08:21:32
Yes, see line 166.
Bill Hesse
2013/07/15 08:26:33
OK, so controller.close is guaranteed to synchrono
|
| + onError: (e) => error = e); |
| + controller.add(bytes); |
| + controller.close(); |
| + if (error != null) throw error; |
| + assert(string != null); |
| + return string; |
| + } |
| } |
| class _HttpBodyFileUpload implements HttpBodyFileUpload { |