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

Side by Side Diff: sdk/lib/io/http_impl.dart

Issue 125743002: Add HttpRequest::requestedUri. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sdk/lib/io/http.dart ('k') | tests/standalone/io/http_requested_uri_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 const int _HEADERS_BUFFER_SIZE = 8 * 1024; 7 const int _HEADERS_BUFFER_SIZE = 8 * 1024;
8 8
9 class _HttpIncoming extends Stream<List<int>> { 9 class _HttpIncoming extends Stream<List<int>> {
10 final int _transferLength; 10 final int _transferLength;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 83
84 class _HttpRequest extends _HttpInboundMessage implements HttpRequest { 84 class _HttpRequest extends _HttpInboundMessage implements HttpRequest {
85 final HttpResponse response; 85 final HttpResponse response;
86 86
87 final _HttpServer _httpServer; 87 final _HttpServer _httpServer;
88 88
89 final _HttpConnection _httpConnection; 89 final _HttpConnection _httpConnection;
90 90
91 _HttpSession _session; 91 _HttpSession _session;
92 92
93 Uri _requestedUri;
94
93 _HttpRequest(_HttpResponse this.response, 95 _HttpRequest(_HttpResponse this.response,
94 _HttpIncoming _incoming, 96 _HttpIncoming _incoming,
95 _HttpServer this._httpServer, 97 _HttpServer this._httpServer,
96 _HttpConnection this._httpConnection) 98 _HttpConnection this._httpConnection)
97 : super(_incoming) { 99 : super(_incoming) {
98 if (headers.protocolVersion == "1.1") { 100 if (headers.protocolVersion == "1.1") {
99 response.headers.chunkedTransferEncoding = true; 101 response.headers.chunkedTransferEncoding = true;
100 response.headers.persistentConnection = headers.persistentConnection; 102 response.headers.persistentConnection = headers.persistentConnection;
101 } 103 }
102 104
(...skipping 17 matching lines...) Expand all
120 void onDone(), 122 void onDone(),
121 bool cancelOnError}) { 123 bool cancelOnError}) {
122 return _incoming.listen(onData, 124 return _incoming.listen(onData,
123 onError: onError, 125 onError: onError,
124 onDone: onDone, 126 onDone: onDone,
125 cancelOnError: cancelOnError); 127 cancelOnError: cancelOnError);
126 } 128 }
127 129
128 Uri get uri => _incoming.uri; 130 Uri get uri => _incoming.uri;
129 131
132 Uri get requestedUri {
133 if (_requestedUri == null) {
134 var proto = headers['x-forwarded-proto'];
135 var scheme = proto != null ? proto.first :
136 _httpConnection._socket is SecureSocket ? "https" : "http";
137 var host = headers['x-forwarded-host'];
138 if (host != null) {
139 host = host.first;
140 } else {
141 host = headers['host'];
142 if (host != null) {
143 host = host.first;
144 } else {
145 host = "${_httpServer.address.host}:${_httpServer.port}";
146 }
147 }
148 _requestedUri = Uri.parse("$scheme://$host$uri");
149 }
150 return _requestedUri;
151 }
152
130 String get method => _incoming.method; 153 String get method => _incoming.method;
131 154
132 HttpSession get session { 155 HttpSession get session {
133 if (_session != null) { 156 if (_session != null) {
134 if (_session._destroyed) { 157 if (_session._destroyed) {
135 // It's destroyed, clear it. 158 // It's destroyed, clear it.
136 _session = null; 159 _session = null;
137 // Create new session object by calling recursive. 160 // Create new session object by calling recursive.
138 return session; 161 return session;
139 } 162 }
(...skipping 2441 matching lines...) Expand 10 before | Expand all | Expand 10 after
2581 2604
2582 String _getHttpVersion() { 2605 String _getHttpVersion() {
2583 var version = Platform.version; 2606 var version = Platform.version;
2584 // Only include major and minor version numbers. 2607 // Only include major and minor version numbers.
2585 int index = version.indexOf('.', version.indexOf('.') + 1); 2608 int index = version.indexOf('.', version.indexOf('.') + 1);
2586 version = version.substring(0, index); 2609 version = version.substring(0, index);
2587 return 'Dart/$version (dart:io)'; 2610 return 'Dart/$version (dart:io)';
2588 } 2611 }
2589 2612
2590 2613
OLDNEW
« no previous file with comments | « sdk/lib/io/http.dart ('k') | tests/standalone/io/http_requested_uri_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698