Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(31)

Unified Diff: sdk/lib/io/http_body.dart

Issue 18438005: Move MimeMultipartTransformer and HttpBodyHandler to mime and http_server packages. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Removed _BufferList copy and MimeMultipartException reference in pub. Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sdk/lib/io/http_body.dart
diff --git a/sdk/lib/io/http_body.dart b/sdk/lib/io/http_body.dart
deleted file mode 100644
index 47a28f09f2bca8c8d264eb30ffccdf5ed449557f..0000000000000000000000000000000000000000
--- a/sdk/lib/io/http_body.dart
+++ /dev/null
@@ -1,238 +0,0 @@
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// 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;
-
-
-/**
- * [HttpBodyHandler] is a helper class for processing and collecting
- * HTTP message data in an easy-to-use [HttpBody] object. The content
- * body is parsed, depending on the `Content-Type` header field. When
- * the full body is read and parsed the body content is made
- * available. The class can be used to process both server requests
- * and client responses.
- *
- * The following content types are recognized:
- *
- * text/\*
- * application/json
- * application/x-www-form-urlencoded
- * multipart/form-data
- *
- * For content type `text/\*` the body is decoded into a string. The
- * 'charset' parameter of the content type specifies the encoding
- * used for decoding. If no 'charset' is present the default encoding
- * of ISO-8859-1 is used.
- *
- * For content type `application/json` the body is decoded into a
- * string which is then parsed as JSON. The resulting body is a
- * [Map]. The 'charset' parameter of the content type specifies the
- * encoding used for decoding. If no 'charset' is present the default
- * encoding of UTF-8 is used.
- *
- * For content type `application/x-www-form-urlencoded` the body is a
- * query string which is then split according to the rules for
- * splitting a query string. The resulting body is a `Map<String,
- * String>`. If the same name is present several times in the query
- * string, then the last value seen for this name will be in the
- * resulting map. The encoding US-ASCII is always used for decoding
- * the body.
- *
- * For content type `multipart/form-data` the body is parsed into
- * it's different fields. The resulting body is a `Map<String,
- * dynamic>`, where the value is a [String] for normal fields and a
- * [HttpBodyFileUpload] instance for file upload fields. If the same
- * name is present several times, then the last value seen for this
- * name will be in the resulting map.
- *
- * When using content type `multipart/form-data` the encoding of
- * fields with [String] values is determined by the browser sending
- * the HTTP request with the form data. The encoding is specified
- * either by the attribute `accept-charset` on the HTML form, or by
- * the content type of the web page containing the form. If the HTML
- * form has an `accept-charset` attribute the browser will use the
- * encoding specified there. If the HTML form has no `accept-charset`
- * attribute the browser determines the encoding from the content
- * type of the web page containing the form. Using a content type of
- * `text/html; charset=utf-8` for the page and setting
- * `accept-charset` on the HTML form to `utf-8` is recommended as the
- * default for [HttpBodyHandler] is UTF-8. It is important to get
- * these encoding values right, as the actual `multipart/form-data`
- * HTTP request sent by the browser does _not_ contain any
- * information on the encoding. If something else than UTF-8 is used
- * `defaultEncoding` needs to be set in the [HttpBodyHandler]
- * constructor and calls to [processRequest] and [processResponse].
- *
- * For all other content types the body will be treated as
- * uninterpreted binary data. The resulting body will be of type
- * `List<int>`.
- *
- * To use with the [HttpServer] for request messages, [HttpBodyHandler] can be
- * used as either a [StreamTransformer] or as a per-request handler (see
- * [processRequest]).
- *
- * HttpServer server = ...
- * server.transform(new HttpBodyHandler())
- * .listen((HttpRequestBody body) {
- * ...
- * });
- *
- * To use with the [HttpClient] for response messages, [HttpBodyHandler] can be
- * used as a per-request handler (see [processResponse]).
- *
- * HttpClient client = ...
- * client.get(...)
- * .then((HttpClientRequest response) => response.close())
- * .then(HttpBodyHandler.processResponse)
- * .then((HttpClientResponseBody body) {
- * ...
- * });
- *
- */
-class HttpBodyHandler
- implements StreamTransformer<HttpRequest, HttpRequestBody> {
- var _transformer;
-
- /**
- * Create a new [HttpBodyHandler] to be used with a [Stream]<[HttpRequest]>,
- * e.g. a [HttpServer].
- *
- * If the page is served using different encoding than UTF-8, set
- * [defaultEncoding] accordingly. This is required for parsing
- * `multipart/form-data` content correctly. See the class comment
- * for more information on `multipart/form-data`.
- */
- HttpBodyHandler({Encoding defaultEncoding: Encoding.UTF_8})
- : _transformer = new _HttpBodyHandlerTransformer(defaultEncoding);
-
- /**
- * Process and parse an incoming [HttpRequest]. The returned [HttpRequestBody]
- * contains a [response] field for accessing the [HttpResponse].
- *
- * See [HttpBodyHandler] constructor for more info on [defaultEncoding].
- */
- static Future<HttpRequestBody> processRequest(
- HttpRequest request,
- {Encoding defaultEncoding: Encoding.UTF_8}) {
- return _HttpBodyHandler.processRequest(request, defaultEncoding);
- }
-
- /**
- * Process and parse an incoming [HttpClientResponse].
- *
- * See [HttpBodyHandler] constructor for more info on [defaultEncoding].
- */
- static Future<HttpClientResponseBody> processResponse(
- HttpClientResponse response,
- {Encoding defaultEncoding: Encoding.UTF_8}) {
- return _HttpBodyHandler.processResponse(response, defaultEncoding);
- }
-
- Stream<HttpRequestBody> bind(Stream<HttpRequest> stream) {
- return _transformer.bind(stream);
- }
-}
-
-
-/**
- * A HTTP content body produced by [HttpBodyHandler] for either [HttpRequest]
- * or [HttpClientResponse].
- */
-abstract class HttpBody {
- /**
- * The content type e.g. application/json, application/octet-stream,
- * application/x-www-form-urlencoded, text/plain.
- */
- ContentType get contentType;
-
- /**
- * A high-level type value, that reflects how the body was parsed, e.g.
- * "text", "binary" and "json".
- */
- String get type;
-
- /**
- * The actual body. The type depends on [type].
- */
- dynamic get body;
-}
-
-
-/**
- * The [HttpBody] of a [HttpClientResponse] will be of type
- * [HttpClientResponseBody]. It contains the [HttpClientResponse] object
- * for access to the headers.
- */
-abstract class HttpClientResponseBody extends HttpBody {
- /**
- * Returns the status code.
- */
- int get statusCode;
-
- /**
- * Returns the reason phrase associated with the status code.
- */
- String get reasonPhrase;
-
- /**
- * Returns the response headers.
- */
- HttpHeaders get headers;
-
- /**
- * The [HttpClientResponse] of the HTTP body.
- */
- HttpClientResponse get response;
-}
-
-
-/**
- * The [HttpBody] of a [HttpRequest] will be of type [HttpRequestBody]. It
- * contains the fields used to read all request header information and
- * responding to the client.
- */
-abstract class HttpRequestBody extends HttpBody {
- /**
- * Returns the method for the request.
- */
- String get method;
-
- /**
- * Returns the URI for the request.
- */
- Uri get uri;
-
- /**
- * Returns the request headers.
- */
- HttpHeaders get headers;
-
- /**
- * The [HttpResponse] used for responding to the client.
- */
- HttpResponse get response;
-}
-
-
-/**
- * A [HttpBodyFileUpload] object wraps a file upload, presenting a way for
- * extracting filename, contentType and the data of the uploaded file.
- */
-abstract class HttpBodyFileUpload {
- /**
- * The filename of the uploaded file.
- */
- String filename;
-
- /**
- * The [ContentType] of the uploaded file. For 'text/\*' and
- * 'application/json' the [data] field will a String.
- */
- ContentType contentType;
-
- /**
- * The content of the file. Either a [String] or a [List<int>].
- */
- dynamic content;
-}

Powered by Google App Engine
This is Rietveld 408576698