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 class _HttpIncoming | 7 class _HttpIncoming extends Stream<List<int>> { |
8 extends Stream<List<int>> implements StreamSink<List<int>> { | |
9 final int _transferLength; | 8 final int _transferLength; |
10 final Completer _dataCompleter = new Completer(); | 9 final Completer _dataCompleter = new Completer(); |
11 Stream<List<int>> _stream; | 10 Stream<List<int>> _stream; |
12 | 11 |
13 bool fullBodyRead = false; | 12 bool fullBodyRead = false; |
14 | 13 |
15 // Common properties. | 14 // Common properties. |
16 final _HttpHeaders headers; | 15 final _HttpHeaders headers; |
17 bool upgraded = false; | 16 bool upgraded = false; |
18 | 17 |
(...skipping 28 matching lines...) Expand all Loading... |
47 | 46 |
48 // Is completed once all data have been received. | 47 // Is completed once all data have been received. |
49 Future get dataDone => _dataCompleter.future; | 48 Future get dataDone => _dataCompleter.future; |
50 | 49 |
51 void close() { | 50 void close() { |
52 fullBodyRead = true; | 51 fullBodyRead = true; |
53 _dataCompleter.complete(); | 52 _dataCompleter.complete(); |
54 } | 53 } |
55 } | 54 } |
56 | 55 |
57 class _HttpInboundMessage extends Stream<List<int>> { | 56 abstract class _HttpInboundMessage extends Stream<List<int>> { |
58 final _HttpIncoming _incoming; | 57 final _HttpIncoming _incoming; |
59 List<Cookie> _cookies; | 58 List<Cookie> _cookies; |
60 | 59 |
61 _HttpInboundMessage(_HttpIncoming this._incoming); | 60 _HttpInboundMessage(_HttpIncoming this._incoming); |
62 | 61 |
63 List<Cookie> get cookies { | 62 List<Cookie> get cookies { |
64 if (_cookies != null) return _cookies; | 63 if (_cookies != null) return _cookies; |
65 return _cookies = headers._parseCookies(); | 64 return _cookies = headers._parseCookies(); |
66 } | 65 } |
67 | 66 |
68 HttpHeaders get headers => _incoming.headers; | 67 _HttpHeaders get headers => _incoming.headers; |
69 String get protocolVersion => headers.protocolVersion; | 68 String get protocolVersion => headers.protocolVersion; |
70 int get contentLength => headers.contentLength; | 69 int get contentLength => headers.contentLength; |
71 bool get persistentConnection => headers.persistentConnection; | 70 bool get persistentConnection => headers.persistentConnection; |
72 } | 71 } |
73 | 72 |
74 | 73 |
75 class _HttpRequest extends _HttpInboundMessage implements HttpRequest { | 74 class _HttpRequest extends _HttpInboundMessage implements HttpRequest { |
76 final HttpResponse response; | 75 final HttpResponse response; |
77 | 76 |
78 // Lazy initialized parsed query parameters. | 77 // Lazy initialized parsed query parameters. |
79 Map<String, String> _queryParameters; | 78 Map<String, String> _queryParameters; |
80 | 79 |
81 final _HttpServer _httpServer; | 80 final _HttpServer _httpServer; |
82 | 81 |
83 final _HttpConnection _httpConnection; | 82 final _HttpConnection _httpConnection; |
84 | 83 |
85 HttpSession _session; | 84 _HttpSession _session; |
86 | 85 |
87 _HttpRequest(_HttpResponse this.response, | 86 _HttpRequest(_HttpResponse this.response, |
88 _HttpIncoming _incoming, | 87 _HttpIncoming _incoming, |
89 _HttpServer this._httpServer, | 88 _HttpServer this._httpServer, |
90 _HttpConnection this._httpConnection) | 89 _HttpConnection this._httpConnection) |
91 : super(_incoming) { | 90 : super(_incoming) { |
92 response.headers.persistentConnection = headers.persistentConnection; | 91 response.headers.persistentConnection = headers.persistentConnection; |
93 | 92 |
94 if (_httpServer._sessionManagerInstance != null) { | 93 if (_httpServer._sessionManagerInstance != null) { |
95 // Map to session if exists. | 94 // Map to session if exists. |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 List<Cookie> _cookies; | 159 List<Cookie> _cookies; |
161 | 160 |
162 _HttpClientResponse(_HttpIncoming _incoming, | 161 _HttpClientResponse(_HttpIncoming _incoming, |
163 _HttpClientRequest this._httpRequest, | 162 _HttpClientRequest this._httpRequest, |
164 _HttpClient this._httpClient) | 163 _HttpClient this._httpClient) |
165 : super(_incoming); | 164 : super(_incoming); |
166 | 165 |
167 int get statusCode => _incoming.statusCode; | 166 int get statusCode => _incoming.statusCode; |
168 String get reasonPhrase => _incoming.reasonPhrase; | 167 String get reasonPhrase => _incoming.reasonPhrase; |
169 | 168 |
| 169 X509Certificate get certificate { |
| 170 var socket = _httpRequest._httpClientConnection._socket; |
| 171 return socket.peerCertificate; |
| 172 } |
| 173 |
170 List<Cookie> get cookies { | 174 List<Cookie> get cookies { |
171 if (_cookies != null) return _cookies; | 175 if (_cookies != null) return _cookies; |
172 _cookies = new List<Cookie>(); | 176 _cookies = new List<Cookie>(); |
173 List<String> values = headers[HttpHeaders.SET_COOKIE]; | 177 List<String> values = headers[HttpHeaders.SET_COOKIE]; |
174 if (values != null) { | 178 if (values != null) { |
175 values.forEach((value) { | 179 values.forEach((value) { |
176 _cookies.add(new Cookie.fromSetCookieValue(value)); | 180 _cookies.add(new Cookie.fromSetCookieValue(value)); |
177 }); | 181 }); |
178 } | 182 } |
179 return _cookies; | 183 return _cookies; |
(...skipping 1421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1601 | 1605 |
1602 | 1606 |
1603 class _RedirectInfo implements RedirectInfo { | 1607 class _RedirectInfo implements RedirectInfo { |
1604 const _RedirectInfo(int this.statusCode, | 1608 const _RedirectInfo(int this.statusCode, |
1605 String this.method, | 1609 String this.method, |
1606 Uri this.location); | 1610 Uri this.location); |
1607 final int statusCode; | 1611 final int statusCode; |
1608 final String method; | 1612 final String method; |
1609 final Uri location; | 1613 final Uri location; |
1610 } | 1614 } |
OLD | NEW |