From 4d16656100d74c81f6bf3783343d28643b4c7939 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Tue, 27 Sep 2016 13:26:20 +0200 Subject: [PATCH 1/2] Preserve status code and headers in JSON responses refs #12583 --- library/Icinga/Web/Response.php | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/library/Icinga/Web/Response.php b/library/Icinga/Web/Response.php index 5fa5bc0bd..7e0b89693 100644 --- a/library/Icinga/Web/Response.php +++ b/library/Icinga/Web/Response.php @@ -210,9 +210,11 @@ class Response extends Zend_Controller_Response_Http * * @return JsonResponse */ - public static function json() + public function json() { - return new JsonResponse(); + $response = new JsonResponse(); + $response->setMetaDataFrom($this); + return $response; } /** @@ -292,4 +294,20 @@ class Response extends Zend_Controller_Response_Http } return parent::sendHeaders(); } + + /** + * Copies non-body-related response data from $response + * + * @param Response $response + * + * @return $this + */ + protected function setMetaDataFrom(self $response) + { + $this->_headers = $response->_headers; + $this->_headersRaw = $response->_headersRaw; + $this->_httpResponseCode = $response->_httpResponseCode; + $this->headersSentThrowsException = $response->headersSentThrowsException; + return $this; + } } From bf3cfda209d9ee442f675eedd2f85a3c1da23952 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Tue, 11 Oct 2016 10:45:15 +0200 Subject: [PATCH 2/2] Response: rename setMetaDataFrom() to copyMetaDataFrom() refs #12583 --- library/Icinga/Web/Response.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/Icinga/Web/Response.php b/library/Icinga/Web/Response.php index 7e0b89693..af3e1e27e 100644 --- a/library/Icinga/Web/Response.php +++ b/library/Icinga/Web/Response.php @@ -213,7 +213,7 @@ class Response extends Zend_Controller_Response_Http public function json() { $response = new JsonResponse(); - $response->setMetaDataFrom($this); + $response->copyMetaDataFrom($this); return $response; } @@ -302,7 +302,7 @@ class Response extends Zend_Controller_Response_Http * * @return $this */ - protected function setMetaDataFrom(self $response) + protected function copyMetaDataFrom(self $response) { $this->_headers = $response->_headers; $this->_headersRaw = $response->_headersRaw;