| Index: sdk/lib/io/http.dart
|
| diff --git a/sdk/lib/io/http.dart b/sdk/lib/io/http.dart
|
| index 859803740686bae66ca75c8b87e48fcfc650ba4a..7efe014b2c9991a3409184cf4f73e2ad949074b4 100644
|
| --- a/sdk/lib/io/http.dart
|
| +++ b/sdk/lib/io/http.dart
|
| @@ -83,6 +83,27 @@ abstract class HttpStatus {
|
| */
|
| abstract class HttpServer implements Stream<HttpRequest> {
|
| /**
|
| + * Set and get the default value of the `Server` header for all responses
|
| + * generated by this [HttpServer]. The default value is
|
| + * `Dart/<version> (dart:io)`.
|
| + *
|
| + * If the serverHeader is set to `null`, no default `Server` header will be
|
| + * added to each response.
|
| + */
|
| + String serverHeader;
|
| +
|
| + /**
|
| + * Get or set the timeout used for idle keep-alive connections. If no further
|
| + * request is seen within [idleTimeout] after the previous request was
|
| + * completed, the connection is dropped.
|
| + *
|
| + * Default is 120 seconds.
|
| + *
|
| + * To disable, set [idleTimeout] to `null`.
|
| + */
|
| + Duration idleTimeout;
|
| +
|
| + /**
|
| * Starts listening for HTTP requests on the specified [address] and
|
| * [port].
|
| *
|
| @@ -205,27 +226,6 @@ abstract class HttpServer implements Stream<HttpRequest> {
|
| * current connections handled by the server.
|
| */
|
| HttpConnectionsInfo connectionsInfo();
|
| -
|
| - /**
|
| - * Set and get the default value of the `Server` header for all responses
|
| - * generated by this [HttpServer]. The default value is
|
| - * `Dart/<version> (dart:io)`.
|
| - *
|
| - * If the serverHeader is set to `null`, no default `Server` header will be
|
| - * added to each response.
|
| - */
|
| - String serverHeader;
|
| -
|
| - /**
|
| - * Get or set the timeout used for idle keep-alive connections. If no further
|
| - * request is seen within [idleTimeout] after the previous request was
|
| - * completed, the connection is droped.
|
| - *
|
| - * Default is 120 seconds.
|
| - *
|
| - * To disable, set [idleTimeout] to `null`.
|
| - */
|
| - Duration idleTimeout;
|
| }
|
|
|
|
|
| @@ -372,6 +372,59 @@ abstract class HttpHeaders {
|
| USER_AGENT];
|
|
|
| /**
|
| + * Gets and sets the date. The value of this property will
|
| + * reflect the 'date' header.
|
| + */
|
| + DateTime date;
|
| +
|
| + /**
|
| + * Gets and sets the expiry date. The value of this property will
|
| + * reflect the 'expires' header.
|
| + */
|
| + DateTime expires;
|
| +
|
| + /**
|
| + * Gets and sets the "if-modified-since" date. The value of this property will
|
| + * reflect the "if-modified-since" header.
|
| + */
|
| + DateTime ifModifiedSince;
|
| +
|
| + /**
|
| + * Gets and sets the host part of the 'host' header for the
|
| + * connection.
|
| + */
|
| + String host;
|
| +
|
| + /**
|
| + * Gets and sets the port part of the 'host' header for the
|
| + * connection.
|
| + */
|
| + int port;
|
| +
|
| + /**
|
| + * Gets and sets the content type. Note that the content type in the
|
| + * header will only be updated if this field is set
|
| + * directly. Mutating the returned current value will have no
|
| + * effect.
|
| + */
|
| + ContentType contentType;
|
| +
|
| + /**
|
| + * Gets and sets the content length header value.
|
| + */
|
| + int contentLength;
|
| +
|
| + /**
|
| + * Gets and sets the persistent connection header value.
|
| + */
|
| + bool persistentConnection;
|
| +
|
| + /**
|
| + * Gets and sets the chunked transfer encoding header value.
|
| + */
|
| + bool chunkedTransferEncoding;
|
| +
|
| + /**
|
| * Returns the list of values for the header named [name]. If there
|
| * is no header with the provided name, [:null:] will be returned.
|
| */
|
| @@ -431,59 +484,6 @@ abstract class HttpHeaders {
|
| * 'set-cookie' header has folding disabled by default.
|
| */
|
| void noFolding(String name);
|
| -
|
| - /**
|
| - * Gets and sets the date. The value of this property will
|
| - * reflect the 'date' header.
|
| - */
|
| - DateTime date;
|
| -
|
| - /**
|
| - * Gets and sets the expiry date. The value of this property will
|
| - * reflect the 'expires' header.
|
| - */
|
| - DateTime expires;
|
| -
|
| - /**
|
| - * Gets and sets the "if-modified-since" date. The value of this property will
|
| - * reflect the "if-modified-since" header.
|
| - */
|
| - DateTime ifModifiedSince;
|
| -
|
| - /**
|
| - * Gets and sets the host part of the 'host' header for the
|
| - * connection.
|
| - */
|
| - String host;
|
| -
|
| - /**
|
| - * Gets and sets the port part of the 'host' header for the
|
| - * connection.
|
| - */
|
| - int port;
|
| -
|
| - /**
|
| - * Gets and sets the content type. Note that the content type in the
|
| - * header will only be updated if this field is set
|
| - * directly. Mutating the returned current value will have no
|
| - * effect.
|
| - */
|
| - ContentType contentType;
|
| -
|
| - /**
|
| - * Gets and sets the content length header value.
|
| - */
|
| - int contentLength;
|
| -
|
| - /**
|
| - * Gets and sets the persistent connection header value.
|
| - */
|
| - bool persistentConnection;
|
| -
|
| - /**
|
| - * Gets and sets the chunked transfer encoding header value.
|
| - */
|
| - bool chunkedTransferEncoding;
|
| }
|
|
|
|
|
| @@ -647,19 +647,6 @@ abstract class ContentType implements HeaderValue {
|
| */
|
| abstract class Cookie {
|
| /**
|
| - * Creates a new cookie optionally setting the name and value.
|
| - */
|
| - factory Cookie([String name, String value]) => new _Cookie(name, value);
|
| -
|
| - /**
|
| - * Creates a new cookie by parsing a header value from a 'set-cookie'
|
| - * header.
|
| - */
|
| - factory Cookie.fromSetCookieValue(String value) {
|
| - return new _Cookie.fromSetCookieValue(value);
|
| - }
|
| -
|
| - /**
|
| * Gets and sets the name.
|
| */
|
| String name;
|
| @@ -701,6 +688,19 @@ abstract class Cookie {
|
| bool httpOnly;
|
|
|
| /**
|
| + * Creates a new cookie optionally setting the name and value.
|
| + */
|
| + factory Cookie([String name, String value]) => new _Cookie(name, value);
|
| +
|
| + /**
|
| + * Creates a new cookie by parsing a header value from a 'set-cookie'
|
| + * header.
|
| + */
|
| + factory Cookie.fromSetCookieValue(String value) {
|
| + return new _Cookie.fromSetCookieValue(value);
|
| + }
|
| +
|
| + /**
|
| * Returns the formatted string representation of the cookie. The
|
| * string representation can be used for for setting the Cookie or
|
| * 'set-cookie' headers
|
| @@ -738,16 +738,16 @@ abstract class Cookie {
|
| * HttpServer.bind(HOST, PORT).then((_server) {
|
| * _server.listen((HttpRequest request) {
|
| * switch (request.method) {
|
| - * case 'GET':
|
| + * case 'GET':
|
| * handleGetRequest(request);
|
| * break;
|
| - * case 'POST':
|
| + * case 'POST':
|
| * ...
|
| * }
|
| * },
|
| * onError: handleError); // listen() failed.
|
| * }).catchError(handleError);
|
| - *
|
| + *
|
| * Listen to the HttpRequest stream to handle the
|
| * data and be notified once the entire body is received.
|
| * An HttpRequest object contains an [HttpResponse] object,
|
| @@ -824,7 +824,7 @@ abstract class HttpRequest implements Stream<List<int>> {
|
| HttpSession get session;
|
|
|
| /**
|
| - * The HTTP protocol version used in the request,
|
| + * The HTTP protocol version used in the request,
|
| * either "1.0" or "1.1" (read-only).
|
| */
|
| String get protocolVersion;
|
| @@ -1330,6 +1330,41 @@ abstract class HttpClient {
|
| */
|
| abstract class HttpClientRequest implements IOSink {
|
| /**
|
| + * Gets and sets the requested persistent connection state.
|
| + * The default value is [:true:].
|
| + */
|
| + bool persistentConnection;
|
| +
|
| + /**
|
| + * Set this property to [:true:] if this request should
|
| + * automatically follow redirects. The default is [:true:].
|
| + *
|
| + * Automatic redirect will only happen for "GET" and "HEAD" requests
|
| + * and only for the status codes [:HttpHeaders.MOVED_PERMANENTLY:]
|
| + * (301), [:HttpStatus.FOUND:] (302),
|
| + * [:HttpStatus.MOVED_TEMPORARILY:] (302, alias for
|
| + * [:HttpStatus.FOUND:]), [:HttpStatus.SEE_OTHER:] (303) and
|
| + * [:HttpStatus.TEMPORARY_REDIRECT:] (307). For
|
| + * [:HttpStatus.SEE_OTHER:] (303) autmatic redirect will also happen
|
| + * for "POST" requests with the method changed to "GET" when
|
| + * following the redirect.
|
| + *
|
| + * All headers added to the request will be added to the redirection
|
| + * request(s). However, any body send with the request will not be
|
| + * part of the redirection request(s).
|
| + */
|
| + bool followRedirects;
|
| +
|
| + /**
|
| + * Set this property to the maximum number of redirects to follow
|
| + * when [followRedirects] is [:true:]. If this number is exceeded the
|
| + * [onError] callback will be called with a [RedirectException].
|
| + *
|
| + * The default value is 5.
|
| + */
|
| + int maxRedirects;
|
| +
|
| + /**
|
| * The method of the request.
|
| */
|
| String get method;
|
| @@ -1357,12 +1392,6 @@ abstract class HttpClientRequest implements IOSink {
|
| List<Cookie> get cookies;
|
|
|
| /**
|
| - * Gets and sets the requested persistent connection state.
|
| - * The default value is [:true:].
|
| - */
|
| - bool persistentConnection;
|
| -
|
| - /**
|
| * A [HttpClientResponse] future that will complete once the response is
|
| * available. If an error occurs before the response is available, this
|
| * future will complete with an error.
|
| @@ -1375,35 +1404,6 @@ abstract class HttpClientRequest implements IOSink {
|
| Future<HttpClientResponse> close();
|
|
|
| /**
|
| - * Set this property to [:true:] if this request should
|
| - * automatically follow redirects. The default is [:true:].
|
| - *
|
| - * Automatic redirect will only happen for "GET" and "HEAD" requests
|
| - * and only for the status codes [:HttpHeaders.MOVED_PERMANENTLY:]
|
| - * (301), [:HttpStatus.FOUND:] (302),
|
| - * [:HttpStatus.MOVED_TEMPORARILY:] (302, alias for
|
| - * [:HttpStatus.FOUND:]), [:HttpStatus.SEE_OTHER:] (303) and
|
| - * [:HttpStatus.TEMPORARY_REDIRECT:] (307). For
|
| - * [:HttpStatus.SEE_OTHER:] (303) autmatic redirect will also happen
|
| - * for "POST" requests with the method changed to "GET" when
|
| - * following the redirect.
|
| - *
|
| - * All headers added to the request will be added to the redirection
|
| - * request(s). However, any body send with the request will not be
|
| - * part of the redirection request(s).
|
| - */
|
| - bool followRedirects;
|
| -
|
| - /**
|
| - * Set this property to the maximum number of redirects to follow
|
| - * when [followRedirects] is [:true:]. If this number is exceeded the
|
| - * [onError] callback will be called with a [RedirectException].
|
| - *
|
| - * The default value is 5.
|
| - */
|
| - int maxRedirects;
|
| -
|
| - /**
|
| * Get information about the client connection. Returns [null] if the socket
|
| * is not available.
|
| */
|
| @@ -1584,9 +1584,9 @@ class HttpException implements IOException {
|
| const HttpException(String this.message, {Uri this.uri});
|
|
|
| String toString() {
|
| - var b = new StringBuffer();
|
| - b.write('HttpException: ');
|
| - b.write(message);
|
| + var b = new StringBuffer()
|
| + ..write('HttpException: ')
|
| + ..write(message);
|
| if (uri != null) {
|
| b.write(', uri = $uri');
|
| }
|
| @@ -1599,8 +1599,7 @@ class RedirectException implements HttpException {
|
| final String message;
|
| final List<RedirectInfo> redirects;
|
|
|
| - const RedirectException(String this.message,
|
| - List<RedirectInfo> this.redirects);
|
| + const RedirectException(this.message, this.redirects);
|
|
|
| String toString() => "RedirectException: $message";
|
|
|
|
|