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

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

Issue 22872012: Remove Encoding-enum from dart:io and add interface in dart:convert. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix typo. Created 7 years, 3 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/file_impl.dart ('k') | sdk/lib/io/io_sink.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 class _HttpIncoming extends Stream<List<int>> { 7 class _HttpIncoming extends Stream<List<int>> {
8 final int _transferLength; 8 final int _transferLength;
9 final Completer _dataCompleter = new Completer(); 9 final Completer _dataCompleter = new Completer();
10 Stream<List<int>> _stream; 10 Stream<List<int>> _stream;
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 403
404 final _HttpOutgoing _outgoing; 404 final _HttpOutgoing _outgoing;
405 final Uri _uri; 405 final Uri _uri;
406 406
407 final _HttpHeaders headers; 407 final _HttpHeaders headers;
408 408
409 _HttpOutboundMessage(Uri this._uri, 409 _HttpOutboundMessage(Uri this._uri,
410 String protocolVersion, 410 String protocolVersion,
411 _HttpOutgoing outgoing) 411 _HttpOutgoing outgoing)
412 : _outgoing = outgoing, 412 : _outgoing = outgoing,
413 _headersSink = new IOSink(outgoing, encoding: Encoding.ASCII), 413 _headersSink = new IOSink(outgoing, encoding: ASCII),
414 headers = new _HttpHeaders(protocolVersion) { 414 headers = new _HttpHeaders(protocolVersion) {
415 _dataSink = new IOSink(new _HttpOutboundConsumer(this)); 415 _dataSink = new IOSink(new _HttpOutboundConsumer(this));
416 } 416 }
417 417
418 int get contentLength => headers.contentLength; 418 int get contentLength => headers.contentLength;
419 void set contentLength(int contentLength) { 419 void set contentLength(int contentLength) {
420 headers.contentLength = contentLength; 420 headers.contentLength = contentLength;
421 } 421 }
422 422
423 bool get persistentConnection => headers.persistentConnection; 423 bool get persistentConnection => headers.persistentConnection;
424 void set persistentConnection(bool p) { 424 void set persistentConnection(bool p) {
425 headers.persistentConnection = p; 425 headers.persistentConnection = p;
426 } 426 }
427 427
428 Encoding get encoding { 428 Encoding get encoding {
429 var charset; 429 var charset;
430 if (headers.contentType != null && headers.contentType.charset != null) { 430 if (headers.contentType != null && headers.contentType.charset != null) {
431 charset = headers.contentType.charset; 431 charset = headers.contentType.charset;
432 } else { 432 } else {
433 charset = "iso-8859-1"; 433 charset = "iso-8859-1";
434 } 434 }
435 return Encoding.fromName(charset); 435 return Encoding.getByName(charset);
436 } 436 }
437 437
438 void set encoding(Encoding value) { 438 void set encoding(Encoding value) {
439 throw new StateError("IOSink encoding is not mutable"); 439 throw new StateError("IOSink encoding is not mutable");
440 } 440 }
441 441
442 void write(Object obj) { 442 void write(Object obj) {
443 _dataSink.write(obj); 443 _dataSink.write(obj);
444 } 444 }
445 445
(...skipping 769 matching lines...) Expand 10 before | Expand all | Expand 10 after
1215 request.headers.host = uri.host; 1215 request.headers.host = uri.host;
1216 request.headers.port = port; 1216 request.headers.port = port;
1217 request.headers.set(HttpHeaders.ACCEPT_ENCODING, "gzip"); 1217 request.headers.set(HttpHeaders.ACCEPT_ENCODING, "gzip");
1218 if (_httpClient.userAgent != null) { 1218 if (_httpClient.userAgent != null) {
1219 request.headers.set('User-Agent', _httpClient.userAgent); 1219 request.headers.set('User-Agent', _httpClient.userAgent);
1220 } 1220 }
1221 if (proxy.isAuthenticated) { 1221 if (proxy.isAuthenticated) {
1222 // If the proxy configuration contains user information use that 1222 // If the proxy configuration contains user information use that
1223 // for proxy basic authorization. 1223 // for proxy basic authorization.
1224 String auth = _CryptoUtils.bytesToBase64( 1224 String auth = _CryptoUtils.bytesToBase64(
1225 _encodeString("${proxy.username}:${proxy.password}")); 1225 UTF8.encode("${proxy.username}:${proxy.password}"));
1226 request.headers.set(HttpHeaders.PROXY_AUTHORIZATION, "Basic $auth"); 1226 request.headers.set(HttpHeaders.PROXY_AUTHORIZATION, "Basic $auth");
1227 } else if (!proxy.isDirect && _httpClient._proxyCredentials.length > 0) { 1227 } else if (!proxy.isDirect && _httpClient._proxyCredentials.length > 0) {
1228 proxyCreds = _httpClient._findProxyCredentials(proxy); 1228 proxyCreds = _httpClient._findProxyCredentials(proxy);
1229 if (proxyCreds != null) { 1229 if (proxyCreds != null) {
1230 proxyCreds.authorize(request); 1230 proxyCreds.authorize(request);
1231 } 1231 }
1232 } 1232 }
1233 if (uri.userInfo != null && !uri.userInfo.isEmpty) { 1233 if (uri.userInfo != null && !uri.userInfo.isEmpty) {
1234 // If the URL contains user information use that for basic 1234 // If the URL contains user information use that for basic
1235 // authorization. 1235 // authorization.
1236 String auth = 1236 String auth =
1237 _CryptoUtils.bytesToBase64(_encodeString(uri.userInfo)); 1237 _CryptoUtils.bytesToBase64(UTF8.encode(uri.userInfo));
1238 request.headers.set(HttpHeaders.AUTHORIZATION, "Basic $auth"); 1238 request.headers.set(HttpHeaders.AUTHORIZATION, "Basic $auth");
1239 } else { 1239 } else {
1240 // Look for credentials. 1240 // Look for credentials.
1241 creds = _httpClient._findCredentials(uri); 1241 creds = _httpClient._findCredentials(uri);
1242 if (creds != null) { 1242 if (creds != null) {
1243 creds.authorize(request); 1243 creds.authorize(request);
1244 } 1244 }
1245 } 1245 }
1246 // Start sending the request (lazy, delayed until the user provides 1246 // Start sending the request (lazy, delayed until the user provides
1247 // data). 1247 // data).
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1338 Future<_HttpClientConnection> createProxyTunnel(host, port, proxy, callback) { 1338 Future<_HttpClientConnection> createProxyTunnel(host, port, proxy, callback) {
1339 _HttpClientRequest request = 1339 _HttpClientRequest request =
1340 send(new Uri(host: host, port: port), 1340 send(new Uri(host: host, port: port),
1341 port, 1341 port,
1342 "CONNECT", 1342 "CONNECT",
1343 proxy); 1343 proxy);
1344 if (proxy.isAuthenticated) { 1344 if (proxy.isAuthenticated) {
1345 // If the proxy configuration contains user information use that 1345 // If the proxy configuration contains user information use that
1346 // for proxy basic authorization. 1346 // for proxy basic authorization.
1347 String auth = _CryptoUtils.bytesToBase64( 1347 String auth = _CryptoUtils.bytesToBase64(
1348 _encodeString("${proxy.username}:${proxy.password}")); 1348 UTF8.encode("${proxy.username}:${proxy.password}"));
1349 request.headers.set(HttpHeaders.PROXY_AUTHORIZATION, "Basic $auth"); 1349 request.headers.set(HttpHeaders.PROXY_AUTHORIZATION, "Basic $auth");
1350 } 1350 }
1351 return request.close() 1351 return request.close()
1352 .then((response) { 1352 .then((response) {
1353 if (response.statusCode != HttpStatus.OK) { 1353 if (response.statusCode != HttpStatus.OK) {
1354 throw "Proxy failed to establish tunnel " 1354 throw "Proxy failed to establish tunnel "
1355 "(${response.statusCode} ${response.reasonPhrase})"; 1355 "(${response.statusCode} ${response.reasonPhrase})";
1356 } 1356 }
1357 var socket = response._httpRequest._httpClientConnection._socket; 1357 var socket = response._httpRequest._httpClientConnection._socket;
1358 return SecureSocket.secure( 1358 return SecureSocket.secure(
(...skipping 904 matching lines...) Expand 10 before | Expand all | Expand 10 after
2263 _Credentials(this.credentials, this.realm) { 2263 _Credentials(this.credentials, this.realm) {
2264 if (credentials.scheme == _AuthenticationScheme.DIGEST) { 2264 if (credentials.scheme == _AuthenticationScheme.DIGEST) {
2265 // Calculate the H(A1) value once. There is no mentioning of 2265 // Calculate the H(A1) value once. There is no mentioning of
2266 // username/password encoding in RFC 2617. However there is an 2266 // username/password encoding in RFC 2617. However there is an
2267 // open draft for adding an additional accept-charset parameter to 2267 // open draft for adding an additional accept-charset parameter to
2268 // the WWW-Authenticate and Proxy-Authenticate headers, see 2268 // the WWW-Authenticate and Proxy-Authenticate headers, see
2269 // http://tools.ietf.org/html/draft-reschke-basicauth-enc-06. For 2269 // http://tools.ietf.org/html/draft-reschke-basicauth-enc-06. For
2270 // now always use UTF-8 encoding. 2270 // now always use UTF-8 encoding.
2271 _HttpClientDigestCredentials creds = credentials; 2271 _HttpClientDigestCredentials creds = credentials;
2272 var hasher = new _MD5(); 2272 var hasher = new _MD5();
2273 hasher.add(_encodeString(creds.username)); 2273 hasher.add(UTF8.encode(creds.username));
2274 hasher.add([_CharCode.COLON]); 2274 hasher.add([_CharCode.COLON]);
2275 hasher.add(realm.codeUnits); 2275 hasher.add(realm.codeUnits);
2276 hasher.add([_CharCode.COLON]); 2276 hasher.add([_CharCode.COLON]);
2277 hasher.add(_encodeString(creds.password)); 2277 hasher.add(UTF8.encode(creds.password));
2278 ha1 = _CryptoUtils.bytesToHex(hasher.close()); 2278 ha1 = _CryptoUtils.bytesToHex(hasher.close());
2279 } 2279 }
2280 } 2280 }
2281 2281
2282 _AuthenticationScheme get scheme => credentials.scheme; 2282 _AuthenticationScheme get scheme => credentials.scheme;
2283 2283
2284 void authorize(HttpClientRequest request); 2284 void authorize(HttpClientRequest request);
2285 } 2285 }
2286 2286
2287 class _SiteCredentials extends _Credentials { 2287 class _SiteCredentials extends _Credentials {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
2356 _AuthenticationScheme get scheme => _AuthenticationScheme.BASIC; 2356 _AuthenticationScheme get scheme => _AuthenticationScheme.BASIC;
2357 2357
2358 String authorization() { 2358 String authorization() {
2359 // There is no mentioning of username/password encoding in RFC 2359 // There is no mentioning of username/password encoding in RFC
2360 // 2617. However there is an open draft for adding an additional 2360 // 2617. However there is an open draft for adding an additional
2361 // accept-charset parameter to the WWW-Authenticate and 2361 // accept-charset parameter to the WWW-Authenticate and
2362 // Proxy-Authenticate headers, see 2362 // Proxy-Authenticate headers, see
2363 // http://tools.ietf.org/html/draft-reschke-basicauth-enc-06. For 2363 // http://tools.ietf.org/html/draft-reschke-basicauth-enc-06. For
2364 // now always use UTF-8 encoding. 2364 // now always use UTF-8 encoding.
2365 String auth = 2365 String auth =
2366 _CryptoUtils.bytesToBase64(_encodeString("$username:$password")); 2366 _CryptoUtils.bytesToBase64(UTF8.encode("$username:$password"));
2367 return "Basic $auth"; 2367 return "Basic $auth";
2368 } 2368 }
2369 2369
2370 void authorize(_Credentials _, HttpClientRequest request) { 2370 void authorize(_Credentials _, HttpClientRequest request) {
2371 request.headers.set(HttpHeaders.AUTHORIZATION, authorization()); 2371 request.headers.set(HttpHeaders.AUTHORIZATION, authorization());
2372 } 2372 }
2373 2373
2374 void authorizeProxy(_ProxyCredentials _, HttpClientRequest request) { 2374 void authorizeProxy(_ProxyCredentials _, HttpClientRequest request) {
2375 request.headers.set(HttpHeaders.PROXY_AUTHORIZATION, authorization()); 2375 request.headers.set(HttpHeaders.PROXY_AUTHORIZATION, authorization());
2376 } 2376 }
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
2466 final Uri location; 2466 final Uri location;
2467 } 2467 }
2468 2468
2469 String _getHttpVersion() { 2469 String _getHttpVersion() {
2470 var version = Platform.version; 2470 var version = Platform.version;
2471 // Only include major and minor version numbers. 2471 // Only include major and minor version numbers.
2472 int index = version.indexOf('.', version.indexOf('.') + 1); 2472 int index = version.indexOf('.', version.indexOf('.') + 1);
2473 version = version.substring(0, index); 2473 version = version.substring(0, index);
2474 return 'Dart/$version (dart:io)'; 2474 return 'Dart/$version (dart:io)';
2475 } 2475 }
OLDNEW
« no previous file with comments | « sdk/lib/io/file_impl.dart ('k') | sdk/lib/io/io_sink.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698