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

Side by Side Diff: pkg/http/lib/src/response.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 | « pkg/http/lib/src/request.dart ('k') | pkg/http/lib/src/utils.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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 library response; 5 library response;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:convert';
8 import 'dart:io'; 9 import 'dart:io';
9 import 'dart:typed_data'; 10 import 'dart:typed_data';
10 11
11 import 'base_request.dart'; 12 import 'base_request.dart';
12 import 'base_response.dart'; 13 import 'base_response.dart';
13 import 'streamed_response.dart'; 14 import 'streamed_response.dart';
14 import 'utils.dart'; 15 import 'utils.dart';
15 16
16 /// An HTTP response where the entire response body is known in advance. 17 /// An HTTP response where the entire response body is known in advance.
17 class Response extends BaseResponse { 18 class Response extends BaseResponse {
18 /// The bytes comprising the body of this response. 19 /// The bytes comprising the body of this response.
19 final Uint8List bodyBytes; 20 final Uint8List bodyBytes;
20 21
21 /// The body of the response as a string. This is converted from [bodyBytes] 22 /// The body of the response as a string. This is converted from [bodyBytes]
22 /// using the `charset` parameter of the `Content-Type` header field, if 23 /// using the `charset` parameter of the `Content-Type` header field, if
23 /// available. If it's unavailable or if the encoding name is unknown, 24 /// available. If it's unavailable or if the encoding name is unknown,
24 /// [Encoding.ISO_8859_1] is used by default, as per [RFC 2616][]. 25 /// [LATIN1] is used by default, as per [RFC 2616][].
25 /// 26 ///
26 /// [RFC 2616]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html 27 /// [RFC 2616]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html
27 String get body => decodeString(bodyBytes, _encodingForHeaders(headers)); 28 String get body => _encodingForHeaders(headers).decode(bodyBytes);
28 29
29 /// Creates a new HTTP response with a string body. 30 /// Creates a new HTTP response with a string body.
30 Response( 31 Response(
31 String body, 32 String body,
32 int statusCode, 33 int statusCode,
33 {BaseRequest request, 34 {BaseRequest request,
34 Map<String, String> headers: const {}, 35 Map<String, String> headers: const {},
35 bool isRedirect: false, 36 bool isRedirect: false,
36 bool persistentConnection: true, 37 bool persistentConnection: true,
37 String reasonPhrase}) 38 String reasonPhrase})
38 : this.bytes( 39 : this.bytes(
39 encodeString(body, _encodingForHeaders(headers)), 40 _encodingForHeaders(headers).encode(body),
40 statusCode, 41 statusCode,
41 request: request, 42 request: request,
42 headers: headers, 43 headers: headers,
43 isRedirect: isRedirect, 44 isRedirect: isRedirect,
44 persistentConnection: persistentConnection, 45 persistentConnection: persistentConnection,
45 reasonPhrase: reasonPhrase); 46 reasonPhrase: reasonPhrase);
46 47
47 /// Create a new HTTP response with a byte array body. 48 /// Create a new HTTP response with a byte array body.
48 Response.bytes( 49 Response.bytes(
49 List<int> bodyBytes, 50 List<int> bodyBytes,
(...skipping 23 matching lines...) Expand all
73 request: response.request, 74 request: response.request,
74 headers: response.headers, 75 headers: response.headers,
75 isRedirect: response.isRedirect, 76 isRedirect: response.isRedirect,
76 persistentConnection: response.persistentConnection, 77 persistentConnection: response.persistentConnection,
77 reasonPhrase: response.reasonPhrase); 78 reasonPhrase: response.reasonPhrase);
78 }); 79 });
79 } 80 }
80 } 81 }
81 82
82 /// Returns the encoding to use for a response with the given headers. This 83 /// Returns the encoding to use for a response with the given headers. This
83 /// defaults to [Encoding.ISO_8859_1] if the headers don't specify a charset or 84 /// defaults to [LATIN1] if the headers don't specify a charset or
84 /// if that charset is unknown. 85 /// if that charset is unknown.
85 Encoding _encodingForHeaders(Map<String, String> headers) => 86 Encoding _encodingForHeaders(Map<String, String> headers) =>
86 encodingForCharset(_contentTypeForHeaders(headers).charset); 87 encodingForCharset(_contentTypeForHeaders(headers).charset);
87 88
88 /// Returns the [ContentType] object for the given headers. Defaults to 89 /// Returns the [ContentType] object for the given headers. Defaults to
89 /// `application/octet-stream`. 90 /// `application/octet-stream`.
90 ContentType _contentTypeForHeaders(Map<String, String> headers) { 91 ContentType _contentTypeForHeaders(Map<String, String> headers) {
91 var contentType = headers[HttpHeaders.CONTENT_TYPE]; 92 var contentType = headers[HttpHeaders.CONTENT_TYPE];
92 if (contentType != null) return ContentType.parse(contentType); 93 if (contentType != null) return ContentType.parse(contentType);
93 return new ContentType("application", "octet-stream"); 94 return new ContentType("application", "octet-stream");
94 } 95 }
OLDNEW
« no previous file with comments | « pkg/http/lib/src/request.dart ('k') | pkg/http/lib/src/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698