Merge pull request #11821 from owncloud/generic-response
Add a generic data responseremotes/origin/fix-10825
commit
e2001c6d31
@ -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; |
||||
} |
||||
|
||||
|
||||
} |
||||
@ -0,0 +1,87 @@ |
||||
<?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/>. |
||||
* |
||||
*/ |
||||
|
||||
|
||||
namespace OC\AppFramework\Http; |
||||
|
||||
|
||||
use OCP\AppFramework\Http\DataResponse; |
||||
use OCP\AppFramework\Http; |
||||
|
||||
|
||||
class DataResponseTest extends \PHPUnit_Framework_TestCase { |
||||
|
||||
/** |
||||
* @var DataResponse |
||||
*/ |
||||
private $response; |
||||
|
||||
protected function setUp() { |
||||
$this->response = new DataResponse(); |
||||
} |
||||
|
||||
|
||||
public function testSetData() { |
||||
$params = array('hi', 'yo'); |
||||
$this->response->setData($params); |
||||
|
||||
$this->assertEquals(array('hi', 'yo'), $this->response->getData()); |
||||
} |
||||
|
||||
|
||||
public function testConstructorAllowsToSetData() { |
||||
$data = array('hi'); |
||||
$code = 300; |
||||
$response = new DataResponse($data, $code); |
||||
|
||||
$this->assertEquals($data, $response->getData()); |
||||
$this->assertEquals($code, $response->getStatus()); |
||||
} |
||||
|
||||
|
||||
public function testConstructorAllowsToSetHeaders() { |
||||
$data = array('hi'); |
||||
$code = 300; |
||||
$headers = array('test' => 'something'); |
||||
$response = new DataResponse($data, $code, $headers); |
||||
|
||||
$expectedHeaders = array('Cache-Control' => 'no-cache, must-revalidate'); |
||||
$expectedHeaders = array_merge($expectedHeaders, $headers); |
||||
|
||||
$this->assertEquals($data, $response->getData()); |
||||
$this->assertEquals($code, $response->getStatus()); |
||||
$this->assertEquals($expectedHeaders, $response->getHeaders()); |
||||
} |
||||
|
||||
|
||||
public function testChainability() { |
||||
$params = array('hi', 'yo'); |
||||
$this->response->setData($params) |
||||
->setStatus(Http::STATUS_NOT_FOUND); |
||||
|
||||
$this->assertEquals(Http::STATUS_NOT_FOUND, $this->response->getStatus()); |
||||
$this->assertEquals(array('hi', 'yo'), $this->response->getData()); |
||||
} |
||||
|
||||
|
||||
} |
||||
Loading…
Reference in new issue