| Index: pkg/shelf/lib/src/response.dart
|
| diff --git a/pkg/shelf/lib/src/response.dart b/pkg/shelf/lib/src/response.dart
|
| index e59b0c55ef8482ebee3c0d758aa1ec496473fe2e..c36c551a5a177ddcf6fae74d675e69af640b0e49 100644
|
| --- a/pkg/shelf/lib/src/response.dart
|
| +++ b/pkg/shelf/lib/src/response.dart
|
| @@ -10,6 +10,7 @@ import 'dart:convert';
|
| import 'package:http_parser/http_parser.dart';
|
|
|
| import 'message.dart';
|
| +import 'util.dart';
|
|
|
| /// The response returned by a [Handler].
|
| class Response extends Message {
|
| @@ -53,7 +54,7 @@ class Response extends Message {
|
| /// If [encoding] is passed, the "encoding" field of the Content-Type header
|
| /// in [headers] will be set appropriately. If there is no existing
|
| /// Content-Type header, it will be set to "application/octet-stream".
|
| - Response.ok(body, {Map<String, String> headers, Encoding encoding,
|
| + Response.ok(body, {Map<String, String> headers, Encoding encoding,
|
| Map<String, Object> context})
|
| : this(200, body: body, headers: headers, encoding: encoding,
|
| context: context);
|
| @@ -118,7 +119,7 @@ class Response extends Message {
|
|
|
| /// Constructs a helper constructor for redirect responses.
|
| Response._redirect(int statusCode, location, body,
|
| - Map<String, String> headers, Encoding encoding,
|
| + Map<String, String> headers, Encoding encoding,
|
| { Map<String, Object> context })
|
| : this(statusCode,
|
| body: body,
|
| @@ -133,7 +134,7 @@ class Response extends Message {
|
| /// information used to determine whether the requested resource has changed
|
| /// since the last request. It indicates that the resource has not changed and
|
| /// the old value should be used.
|
| - Response.notModified({Map<String, String> headers,
|
| + Response.notModified({Map<String, String> headers,
|
| Map<String, Object> context})
|
| : this(304, headers: _addHeader(
|
| headers, 'date', formatHttpDate(new DateTime.now())),
|
| @@ -169,7 +170,7 @@ class Response extends Message {
|
| /// If [encoding] is passed, the "encoding" field of the Content-Type header
|
| /// in [headers] will be set appropriately. If there is no existing
|
| /// Content-Type header, it will be set to "application/octet-stream".
|
| - Response.notFound(body, {Map<String, String> headers, Encoding encoding,
|
| + Response.notFound(body, {Map<String, String> headers, Encoding encoding,
|
| Map<String, Object> context})
|
| : this(404, body: body, headers: headers,
|
| context: context);
|
| @@ -215,6 +216,26 @@ class Response extends Message {
|
| throw new ArgumentError("Invalid status code: $statusCode.");
|
| }
|
| }
|
| +
|
| + /// Creates a new [Response] by copying existing values and applying specified
|
| + /// changes.
|
| + ///
|
| + /// New key-value pairs in [context] and [headers] will be added to the copied
|
| + /// [Response].
|
| + ///
|
| + /// If [context] or [headers] includes a key that already exists, the
|
| + /// key-value pair will replace the corresponding entry in the copied
|
| + /// [Response].
|
| + ///
|
| + /// All other context and header values from the [Response] will be included
|
| + /// in the copied [Response] unchanged.
|
| + Response change({Map<String, String> headers, Map<String, Object> context}) {
|
| + headers = updateMap(this.headers, headers);
|
| + context = updateMap(this.context, context);
|
| +
|
| + return new Response(this.statusCode, body: this.read(), headers: headers,
|
| + context: context);
|
| + }
|
| }
|
|
|
| /// Converts [body] to a byte stream.
|
|
|