From 90f63e58885880e5624daec2a1d39738c1799300 Mon Sep 17 00:00:00 2001 From: Lucas Michot Date: Wed, 4 Jan 2017 20:18:29 +0100 Subject: [PATCH 1/2] Let JsonResponse also provide the original data. --- src/Illuminate/Http/JsonResponse.php | 4 ++++ src/Illuminate/Http/Response.php | 17 ----------------- src/Illuminate/Http/ResponseTrait.php | 17 +++++++++++++++++ tests/Http/HttpJsonResponseTest.php | 10 ++++++++++ 4 files changed, 31 insertions(+), 17 deletions(-) diff --git a/src/Illuminate/Http/JsonResponse.php b/src/Illuminate/Http/JsonResponse.php index 2f62909adf15..d192349dbcb0 100755 --- a/src/Illuminate/Http/JsonResponse.php +++ b/src/Illuminate/Http/JsonResponse.php @@ -22,6 +22,8 @@ class JsonResponse extends BaseJsonResponse */ public function __construct($data = null, $status = 200, $headers = [], $options = 0) { + $this->original = $data; + $this->encodingOptions = $options; parent::__construct($data, $status, $headers); @@ -55,6 +57,8 @@ public function getData($assoc = false, $depth = 512) */ public function setData($data = []) { + $this->original = $data; + if ($data instanceof Arrayable) { $this->data = json_encode($data->toArray(), $this->encodingOptions); } elseif ($data instanceof Jsonable) { diff --git a/src/Illuminate/Http/Response.php b/src/Illuminate/Http/Response.php index aa1f475229e8..f3bf3fc17c3b 100755 --- a/src/Illuminate/Http/Response.php +++ b/src/Illuminate/Http/Response.php @@ -12,13 +12,6 @@ class Response extends BaseResponse { use ResponseTrait; - /** - * The original content of the response. - * - * @var mixed - */ - public $original; - /** * Set the content on the response. * @@ -76,14 +69,4 @@ protected function morphToJson($content) return json_encode($content); } - - /** - * Get the original response content. - * - * @return mixed - */ - public function getOriginalContent() - { - return $this->original; - } } diff --git a/src/Illuminate/Http/ResponseTrait.php b/src/Illuminate/Http/ResponseTrait.php index 9b74f385575f..31eadfc70558 100644 --- a/src/Illuminate/Http/ResponseTrait.php +++ b/src/Illuminate/Http/ResponseTrait.php @@ -7,6 +7,13 @@ trait ResponseTrait { + /** + * The original content of the response. + * + * @var mixed + */ + public $original; + /** * The exception that triggered the error response (if applicable). * @@ -34,6 +41,16 @@ public function content() return $this->getContent(); } + /** + * Get the original response content. + * + * @return mixed + */ + public function getOriginalContent() + { + return $this->original; + } + /** * Set a header on the Response. * diff --git a/tests/Http/HttpJsonResponseTest.php b/tests/Http/HttpJsonResponseTest.php index be40a62386d7..67327c55ce25 100644 --- a/tests/Http/HttpJsonResponseTest.php +++ b/tests/Http/HttpJsonResponseTest.php @@ -38,6 +38,16 @@ public function testSetAndRetrieveData() $this->assertEquals('bar', $data->foo); } + public function testGetOriginalContent() + { + $response = new Illuminate\Http\JsonResponse(new JsonResponseTestArrayableObject); + $this->assertInstanceOf(JsonResponseTestArrayableObject::class, $response->getOriginalContent()); + + $response = new Illuminate\Http\JsonResponse; + $response->setData(new JsonResponseTestArrayableObject); + $this->assertInstanceOf(JsonResponseTestArrayableObject::class, $response->getOriginalContent()); + } + public function testSetAndRetrieveOptions() { $response = new Illuminate\Http\JsonResponse(['foo' => 'bar']); From 5d9b75ce5db76c82f160f6227c5623efc2445361 Mon Sep 17 00:00:00 2001 From: Lucas Michot Date: Wed, 4 Jan 2017 20:38:17 +0100 Subject: [PATCH 2/2] Ensure a RedirectResponse does not return any original content. --- src/Illuminate/Http/RedirectResponse.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Illuminate/Http/RedirectResponse.php b/src/Illuminate/Http/RedirectResponse.php index 8496822cde66..80526d1cd866 100755 --- a/src/Illuminate/Http/RedirectResponse.php +++ b/src/Illuminate/Http/RedirectResponse.php @@ -32,6 +32,16 @@ class RedirectResponse extends BaseRedirectResponse */ protected $session; + /** + * Get the original response content. + * + * @return null + */ + public function getOriginalContent() + { + return; + } + /** * Flash a piece of data to the session. *