Index: lib/src/response.dart |
diff --git a/lib/src/response.dart b/lib/src/response.dart |
index 029881305ae8f055908558087e87fb041eb5d791..16bd1da34b1814c681ad06ab7521a76548101885 100644 |
--- a/lib/src/response.dart |
+++ b/lib/src/response.dart |
@@ -4,7 +4,6 @@ |
library shelf.response; |
-import 'dart:async'; |
import 'dart:convert'; |
import 'package:http_parser/http_parser.dart'; |
@@ -124,7 +123,7 @@ class Response extends Message { |
: this(statusCode, |
body: body, |
encoding: encoding, |
- headers: _addHeader( |
+ headers: addHeader( |
headers, 'location', _locationToString(location)), |
context: context); |
@@ -136,7 +135,7 @@ class Response extends Message { |
/// the old value should be used. |
Response.notModified({Map<String, String> headers, |
Map<String, Object> context}) |
- : this(304, headers: _addHeader( |
+ : this(304, headers: addHeader( |
headers, 'date', formatHttpDate(new DateTime.now())), |
context: context); |
@@ -213,9 +212,7 @@ class Response extends Message { |
/// Content-Type header, it will be set to "application/octet-stream". |
Response(this.statusCode, {body, Map<String, String> headers, |
Encoding encoding, Map<String, Object> context}) |
- : super(_bodyToStream(body, encoding), |
- headers: _adjustHeaders(headers, encoding), |
- context: context) { |
+ : super(body, encoding: encoding, headers: headers, context: context) { |
if (statusCode < 100) { |
throw new ArgumentError("Invalid status code: $statusCode."); |
} |
@@ -242,59 +239,18 @@ class Response extends Message { |
} |
} |
-/// Converts [body] to a byte stream. |
-/// |
-/// [body] may be either a [String], a [Stream<List<int>>], or `null`. If it's a |
-/// [String], [encoding] will be used to convert it to a [Stream<List<int>>]. |
-Stream<List<int>> _bodyToStream(body, Encoding encoding) { |
- if (encoding == null) encoding = UTF8; |
- if (body == null) return new Stream.fromIterable([]); |
- if (body is String) return new Stream.fromIterable([encoding.encode(body)]); |
- if (body is Stream) return body; |
- |
- throw new ArgumentError('Response body "$body" must be a String or a ' |
- 'Stream.'); |
-} |
- |
-/// Adds information about [encoding] to [headers]. |
-/// |
-/// Returns a new map without modifying [headers]. |
-Map<String, String> _adjustHeaders( |
- Map<String, String> headers, Encoding encoding) { |
- if (headers == null) headers = const {}; |
- if (encoding == null) return headers; |
- if (headers['content-type'] == null) { |
- return _addHeader(headers, 'content-type', |
- 'application/octet-stream; charset=${encoding.name}'); |
- } |
- |
- var contentType = new MediaType.parse(headers['content-type']) |
- .change(parameters: {'charset': encoding.name}); |
- return _addHeader(headers, 'content-type', contentType.toString()); |
-} |
- |
-/// Adds a header with [name] and [value] to [headers], which may be null. |
-/// |
-/// Returns a new map without modifying [headers]. |
-Map<String, String> _addHeader( |
- Map<String, String> headers, String name, String value) { |
- headers = headers == null ? {} : new Map.from(headers); |
- headers[name] = value; |
- return headers; |
-} |
- |
/// Adds content-type information to [headers]. |
/// |
/// Returns a new map without modifying [headers]. This is used to add |
/// content-type information when creating a 500 response with a default body. |
Map<String, String> _adjustErrorHeaders(Map<String, String> headers) { |
if (headers == null || headers['content-type'] == null) { |
- return _addHeader(headers, 'content-type', 'text/plain'); |
+ return addHeader(headers, 'content-type', 'text/plain'); |
} |
var contentType = new MediaType.parse(headers['content-type']) |
.change(mimeType: 'text/plain'); |
- return _addHeader(headers, 'content-type', contentType.toString()); |
+ return addHeader(headers, 'content-type', contentType.toString()); |
} |
/// Converts [location], which may be a [String] or a [Uri], to a [String]. |