| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of dart.io; | 5 part of dart.io; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * HTTP status codes. | 8 * HTTP status codes. |
| 9 */ | 9 */ |
| 10 abstract class HttpStatus { | 10 abstract class HttpStatus { |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 /** | 57 /** |
| 58 * HTTP server. | 58 * HTTP server. |
| 59 */ | 59 */ |
| 60 abstract class HttpServer implements Stream<HttpRequest> { | 60 abstract class HttpServer implements Stream<HttpRequest> { |
| 61 // TODO(ajohnsen): Document with example, once the stream API is final. | 61 // TODO(ajohnsen): Document with example, once the stream API is final. |
| 62 // TODO(ajohnsen): Add HttpServer.secure. | 62 // TODO(ajohnsen): Add HttpServer.secure. |
| 63 /** | 63 /** |
| 64 * Starts listening for HTTP requests on the specified [address] and | 64 * Starts listening for HTTP requests on the specified [address] and |
| 65 * [port]. | 65 * [port]. |
| 66 * | 66 * |
| 67 * The default value for [address] is 127.0.0.1, which will allow | 67 * The [address] can either be a [String] or an |
| 68 * only incoming connections from the local host. To allow for | 68 * [InternetAddress]. If [address] is a [String], [bind] will |
| 69 * incoming connection from the network use either the value 0.0.0.0 | 69 * perform a [InternetAddress.lookup] and use the first value in the |
| 70 * to bind to all interfaces or the IP address of a specific | 70 * list. To listen on the loopback adapter, which will allow only |
| 71 * interface. | 71 * incoming connections from the local host, use the value |
| 72 * [InternetAddress.LOOPBACK_IP_V4] or |
| 73 * [InternetAddress.LOOPBACK_IP_V6]. To allow for incoming |
| 74 * connection from the network use either one of the values |
| 75 * [InternetAddress.ANY_IP_V4] or [InternetAddress.ANY_IP_V6] to |
| 76 * bind to all interfaces or the IP address of a specific interface. |
| 72 * | 77 * |
| 73 * If [port] has the value [:0:] (the default) an ephemeral port | 78 * If an IP version 6 (IPv6) address is used, both IP version 6 |
| 74 * will be chosen by the system. The actual port used can be | 79 * (IPv6) and version 4 (IPv4) connections will be accepted. To |
| 75 * retrieved using the [:port:] getter. | 80 * restrict this to version 6 (IPv6) only, use [HttpServer.listenOn] |
| 81 * with a [ServerSocket] configured for IP version 6 connections |
| 82 * only. |
| 83 * |
| 84 * If [port] has the value [:0:] an ephemeral port will be chosen by |
| 85 * the system. The actual port used can be retrieved using the |
| 86 * [port] getter. |
| 76 * | 87 * |
| 77 * The optional argument [backlog] can be used to specify the listen | 88 * The optional argument [backlog] can be used to specify the listen |
| 78 * backlog for the underlying OS listen setup. If [backlog] has the | 89 * backlog for the underlying OS listen setup. If [backlog] has the |
| 79 * value of [:0:] (the default) a reasonable value will be chosen by | 90 * value of [:0:] (the default) a reasonable value will be chosen by |
| 80 * the system. | 91 * the system. |
| 81 */ | 92 */ |
| 82 static Future<HttpServer> bind([String address = "127.0.0.1", | 93 static Future<HttpServer> bind(address, |
| 83 int port = 0, | 94 int port, |
| 84 int backlog = 0]) | 95 {int backlog: 0}) |
| 85 => _HttpServer.bind(address, port, backlog); | 96 => _HttpServer.bind(address, port, backlog); |
| 86 | 97 |
| 87 /** | 98 /** |
| 88 * Starts listening for HTTPS requests on the specified [address] and | 99 * The [address] can either be a [String] or an |
| 89 * [port]. If a [port] of 0 is specified the server will choose an | 100 * [InternetAddress]. If [address] is a [String], [bind] will |
| 90 * ephemeral port. The optional argument [backlog] can be used to | 101 * perform a [InternetAddress.lookup] and use the first value in the |
| 91 * specify the listen backlog for the underlying OS listen | 102 * list. To listen on the loopback adapter, which will allow only |
| 92 * setup. | 103 * incoming connections from the local host, use the value |
| 104 * [InternetAddress.LOOPBACK_IP_V4] or |
| 105 * [InternetAddress.LOOPBACK_IP_V6]. To allow for incoming |
| 106 * connection from the network use either one of the values |
| 107 * [InternetAddress.ANY_IP_V4] or [InternetAddress.ANY_IP_V6] to |
| 108 * bind to all interfaces or the IP address of a specific interface. |
| 109 * |
| 110 * If an IP version 6 (IPv6) address is used, both IP version 6 |
| 111 * (IPv6) and version 4 (IPv4) connections will be accepted. To |
| 112 * restrict this to version 6 (IPv6) only, use [HttpServer.listenOn] |
| 113 * with a [ServerSocket] configured for IP version 6 connections |
| 114 * only. |
| 115 * |
| 116 * If [port] has the value [:0:] an ephemeral port will be chosen by |
| 117 * the system. The actual port used can be retrieved using the |
| 118 * [port] getter. |
| 119 * |
| 120 * The optional argument [backlog] can be used to specify the listen |
| 121 * backlog for the underlying OS listen setup. If [backlog] has the |
| 122 * value of [:0:] (the default) a reasonable value will be chosen by |
| 123 * the system. |
| 93 * | 124 * |
| 94 * The certificate with Distinguished Name [certificateName] is looked | 125 * The certificate with Distinguished Name [certificateName] is looked |
| 95 * up in the certificate database, and is used as the server certificate. | 126 * up in the certificate database, and is used as the server certificate. |
| 96 * if [requestClientCertificate] is true, the server will request clients | 127 * if [requestClientCertificate] is true, the server will request clients |
| 97 * to authenticate with a client certificate. | 128 * to authenticate with a client certificate. |
| 98 */ | 129 */ |
| 99 | 130 |
| 100 static Future<HttpServer> bindSecure(String address, | 131 static Future<HttpServer> bindSecure(address, |
| 101 int port, | 132 int port, |
| 102 {int backlog: 0, | 133 {int backlog: 0, |
| 103 String certificateName, | 134 String certificateName, |
| 104 bool requestClientCertificate: false}) | 135 bool requestClientCertificate: false}) |
| 105 => _HttpServer.bindSecure(address, | 136 => _HttpServer.bindSecure(address, |
| 106 port, | 137 port, |
| 107 backlog, | 138 backlog, |
| 108 certificateName, | 139 certificateName, |
| 109 requestClientCertificate); | 140 requestClientCertificate); |
| 110 | 141 |
| (...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 690 | 721 |
| 691 /** | 722 /** |
| 692 * Gets the [HttpResponse] object, used for sending back the response to the | 723 * Gets the [HttpResponse] object, used for sending back the response to the |
| 693 * client. | 724 * client. |
| 694 */ | 725 */ |
| 695 HttpResponse get response; | 726 HttpResponse get response; |
| 696 } | 727 } |
| 697 | 728 |
| 698 | 729 |
| 699 /** | 730 /** |
| 700 * HTTP response to be send back to the client. | 731 * An [HttpResponse] represents the headers and data to be returned to |
| 732 * a client in response to an HTTP request. |
| 701 * | 733 * |
| 702 * This object has a number of properties for setting up the HTTP | 734 * This object has a number of properties for setting up the HTTP |
| 703 * header of the response. When the header has been set up the methods | 735 * header of the response. When the header has been set up the methods |
| 704 * from the [IOSink] can be used to write the actual body of the HTTP | 736 * from the [IOSink] can be used to write the actual body of the HTTP |
| 705 * response. When one of the [IOSink] methods is used for the | 737 * response. When one of the [IOSink] methods is used for the |
| 706 * first time the request header is send. Calling any methods that | 738 * first time the request header is send. Calling any methods that |
| 707 * will change the header after it is sent will throw an exception. | 739 * will change the header after it is sent will throw an exception. |
| 708 * | 740 * |
| 709 * When writing string data through the [IOSink] the encoding used | 741 * When writing string data through the [IOSink] the encoding used |
| 710 * will be determined from the "charset" parameter of the | 742 * will be determined from the "charset" parameter of the |
| (...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1320 class RedirectLimitExceededException extends RedirectException { | 1352 class RedirectLimitExceededException extends RedirectException { |
| 1321 const RedirectLimitExceededException(List<RedirectInfo> redirects) | 1353 const RedirectLimitExceededException(List<RedirectInfo> redirects) |
| 1322 : super("Redirect limit exceeded", redirects); | 1354 : super("Redirect limit exceeded", redirects); |
| 1323 } | 1355 } |
| 1324 | 1356 |
| 1325 | 1357 |
| 1326 class RedirectLoopException extends RedirectException { | 1358 class RedirectLoopException extends RedirectException { |
| 1327 const RedirectLoopException(List<RedirectInfo> redirects) | 1359 const RedirectLoopException(List<RedirectInfo> redirects) |
| 1328 : super("Redirect loop detected", redirects); | 1360 : super("Redirect loop detected", redirects); |
| 1329 } | 1361 } |
| OLD | NEW |