diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-10-28 16:34:04 +0100 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-10-29 09:43:47 +0100 |
commit | 0696099bad56727d96c60f6221fe02dc7c71f511 (patch) | |
tree | 5c4784f13481c73950784eca881cc410659c5450 /lib/public | |
parent | c93ddf77b9e75b9e38764ad4360d82600eae3096 (diff) | |
download | nextcloud-server-0696099bad56727d96c60f6221fe02dc7c71f511.tar.gz nextcloud-server-0696099bad56727d96c60f6221fe02dc7c71f511.zip |
add dataresponse
fix docstrings
adjust copyright date
another copyright date update
another header update
implement third headers argument, fix indention, fix docstrings
fix docstrings
Diffstat (limited to 'lib/public')
-rw-r--r-- | lib/public/appframework/controller.php | 14 | ||||
-rw-r--r-- | lib/public/appframework/http/dataresponse.php | 79 | ||||
-rw-r--r-- | lib/public/appframework/http/response.php | 14 |
3 files changed, 104 insertions, 3 deletions
diff --git a/lib/public/appframework/controller.php b/lib/public/appframework/controller.php index b22eb73343a..398304e6feb 100644 --- a/lib/public/appframework/controller.php +++ b/lib/public/appframework/controller.php @@ -29,6 +29,7 @@ namespace OCP\AppFramework; use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Http\JSONResponse; +use OCP\AppFramework\Http\DataResponse; use OCP\IRequest; @@ -63,8 +64,17 @@ abstract class Controller { // default responders $this->responders = array( - 'json' => function ($response) { - return new JSONResponse($response); + 'json' => function ($data) { + if ($data instanceof DataResponse) { + $response = new JSONResponse( + $data->getData(), + $data->getStatus() + ); + $response->setHeaders($data->getHeaders()); + return $response; + } else { + return new JSONResponse($data); + } } ); } diff --git a/lib/public/appframework/http/dataresponse.php b/lib/public/appframework/http/dataresponse.php new file mode 100644 index 00000000000..5c21de325e1 --- /dev/null +++ b/lib/public/appframework/http/dataresponse.php @@ -0,0 +1,79 @@ +<?php +/** + * ownCloud - App Framework + * + * @author Bernhard Posselt + * @copyright 2014 Bernhard Posselt <dev@bernhard-posselt.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + */ + +/** + * Public interface of ownCloud for apps to use. + * AppFramework\HTTP\DataResponse class + */ + +namespace OCP\AppFramework\Http; + +use OCP\AppFramework\Http; + +/** + * A generic DataResponse class that is used to return generic data responses + * for responders to transform + */ +class DataResponse extends Response { + + /** + * response data + * @var array|object + */ + protected $data; + + + /** + * @param array|object $data the object or array that should be transformed + * @param int $statusCode the Http status code, defaults to 200 + * @param array $headers additional key value based headers + */ + public function __construct($data=array(), $statusCode=Http::STATUS_OK, + array $headers=array()) { + $this->data = $data; + $this->setStatus($statusCode); + $this->setHeaders(array_merge($this->getHeaders(), $headers)); + } + + + /** + * Sets values in the data json array + * @param array|object $data an array or object which will be transformed + * @return DataResponse Reference to this object + */ + public function setData($data){ + $this->data = $data; + + return $this; + } + + + /** + * Used to get the set parameters + * @return array the data + */ + public function getData(){ + return $this->data; + } + + +} diff --git a/lib/public/appframework/http/response.php b/lib/public/appframework/http/response.php index 20e936bb860..354911fee21 100644 --- a/lib/public/appframework/http/response.php +++ b/lib/public/appframework/http/response.php @@ -93,7 +93,7 @@ class Response { */ public function addHeader($name, $value) { $name = trim($name); // always remove leading and trailing whitespace - // to be able to reliably check for security + // to be able to reliably check for security // headers if(is_null($value)) { @@ -107,6 +107,18 @@ class Response { /** + * Set the headers + * @param array key value header pairs + * @return Response Reference to this object + */ + public function setHeaders($headers) { + $this->headers = $headers; + + return $this; + } + + + /** * Returns the set headers * @return array the headers */ |