namespace OC\AppFramework\Controller;
-use OC\AppFramework\Http\TemplateResponse;
use OC\AppFramework\Http\Request;
use OC\AppFramework\Core\API;
+use OCP\AppFramework\Http\TemplateResponse;
/**
* @param string $renderAs user renders a full page, blank only your template
* admin an entry in the admin settings
* @param array $headers set additional headers in name/value pairs
- * @return \OC\AppFramework\Http\TemplateResponse containing the page
+ * @return \OCP\AppFramework\Http\TemplateResponse containing the page
*/
public function render($templateName, array $params=array(),
$renderAs='user', array $headers=array()){
} catch(\Exception $exception){
$response = $this->middlewareDispatcher->afterException(
$controller, $methodName, $exception);
+ if (is_null($response)) {
+ throw $exception;
+ }
}
$response = $this->middlewareDispatcher->afterController(
/**
* Prompts the user to download the a file
*/
-abstract class DownloadResponse extends Response {
+class DownloadResponse extends \OCP\AppFramework\Http\Response {
private $filename;
private $contentType;
namespace OC\AppFramework\Http;
-class Http {
-
- const STATUS_CONTINUE = 100;
- const STATUS_SWITCHING_PROTOCOLS = 101;
- const STATUS_PROCESSING = 102;
- const STATUS_OK = 200;
- const STATUS_CREATED = 201;
- const STATUS_ACCEPTED = 202;
- const STATUS_NON_AUTHORATIVE_INFORMATION = 203;
- const STATUS_NO_CONTENT = 204;
- const STATUS_RESET_CONTENT = 205;
- const STATUS_PARTIAL_CONTENT = 206;
- const STATUS_MULTI_STATUS = 207;
- const STATUS_ALREADY_REPORTED = 208;
- const STATUS_IM_USED = 226;
- const STATUS_MULTIPLE_CHOICES = 300;
- const STATUS_MOVED_PERMANENTLY = 301;
- const STATUS_FOUND = 302;
- const STATUS_SEE_OTHER = 303;
- const STATUS_NOT_MODIFIED = 304;
- const STATUS_USE_PROXY = 305;
- const STATUS_RESERVED = 306;
- const STATUS_TEMPORARY_REDIRECT = 307;
- const STATUS_BAD_REQUEST = 400;
- const STATUS_UNAUTHORIZED = 401;
- const STATUS_PAYMENT_REQUIRED = 402;
- const STATUS_FORBIDDEN = 403;
- const STATUS_NOT_FOUND = 404;
- const STATUS_METHOD_NOT_ALLOWED = 405;
- const STATUS_NOT_ACCEPTABLE = 406;
- const STATUS_PROXY_AUTHENTICATION_REQUIRED = 407;
- const STATUS_REQUEST_TIMEOUT = 408;
- const STATUS_CONFLICT = 409;
- const STATUS_GONE = 410;
- const STATUS_LENGTH_REQUIRED = 411;
- const STATUS_PRECONDITION_FAILED = 412;
- const STATUS_REQUEST_ENTITY_TOO_LARGE = 413;
- const STATUS_REQUEST_URI_TOO_LONG = 414;
- const STATUS_UNSUPPORTED_MEDIA_TYPE = 415;
- const STATUS_REQUEST_RANGE_NOT_SATISFIABLE = 416;
- const STATUS_EXPECTATION_FAILED = 417;
- const STATUS_IM_A_TEAPOT = 418;
- const STATUS_UNPROCESSABLE_ENTITY = 422;
- const STATUS_LOCKED = 423;
- const STATUS_FAILED_DEPENDENCY = 424;
- const STATUS_UPGRADE_REQUIRED = 426;
- const STATUS_PRECONDITION_REQUIRED = 428;
- const STATUS_TOO_MANY_REQUESTS = 429;
- const STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE = 431;
- const STATUS_INTERNAL_SERVER_ERROR = 500;
- const STATUS_NOT_IMPLEMENTED = 501;
- const STATUS_BAD_GATEWAY = 502;
- const STATUS_SERVICE_UNAVAILABLE = 503;
- const STATUS_GATEWAY_TIMEOUT = 504;
- const STATUS_HTTP_VERSION_NOT_SUPPORTED = 505;
- const STATUS_VARIANT_ALSO_NEGOTIATES = 506;
- const STATUS_INSUFFICIENT_STORAGE = 507;
- const STATUS_LOOP_DETECTED = 508;
- const STATUS_BANDWIDTH_LIMIT_EXCEEDED = 509;
- const STATUS_NOT_EXTENDED = 510;
- const STATUS_NETWORK_AUTHENTICATION_REQUIRED = 511;
+class Http extends \OCP\AppFramework\Http\Http{
private $server;
private $protocolVersion;
+++ /dev/null
-<?php
-
-/**
- * ownCloud - App Framework
- *
- * @author Bernhard Posselt
- * @copyright 2012 Bernhard Posselt nukeawhale@gmail.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;
-
-
-/**
- * A renderer for JSON calls
- */
-class JSONResponse extends Response {
-
- protected $data;
-
-
- /**
- * @param array|object $data the object or array that should be transformed
- * @param int $statusCode the Http status code, defaults to 200
- */
- public function __construct($data=array(), $statusCode=Http::STATUS_OK) {
- $this->data = $data;
- $this->setStatus($statusCode);
- $this->addHeader('X-Content-Type-Options', 'nosniff');
- $this->addHeader('Content-type', 'application/json; charset=utf-8');
- }
-
-
- /**
- * Returns the rendered json
- * @return string the rendered json
- */
- public function render(){
- return json_encode($this->data);
- }
-
- /**
- * Sets values in the data json array
- * @param array|object $params an array or object which will be transformed
- * to JSON
- */
- public function setData($data){
- $this->data = $data;
- }
-
-
- /**
- * Used to get the set parameters
- * @return array the data
- */
- public function getData(){
- return $this->data;
- }
-
-}
namespace OC\AppFramework\Http;
+use OCP\AppFramework\Http\Response;
+
/**
* Redirects to a different URL
+++ /dev/null
-<?php
-
-/**
- * ownCloud - App Framework
- *
- * @author Bernhard Posselt, Thomas Tanghus, Bart Visscher
- * @copyright 2012 Bernhard Posselt nukeawhale@gmail.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;
-
-
-/**
- * Base class for responses. Also used to just send headers
- */
-class Response {
-
- /**
- * @var array default headers
- */
- private $headers = array(
- 'Cache-Control' => 'no-cache, must-revalidate'
- );
-
-
- /**
- * @var string
- */
- private $status = Http::STATUS_OK;
-
-
- /**
- * @var \DateTime
- */
- private $lastModified;
-
-
- /**
- * @var string
- */
- private $ETag;
-
-
- /**
- * Caches the response
- * @param int $cacheSeconds the amount of seconds that should be cached
- * if 0 then caching will be disabled
- */
- public function cacheFor($cacheSeconds) {
-
- if($cacheSeconds > 0) {
- $this->addHeader('Cache-Control', 'max-age=' . $cacheSeconds .
- ', must-revalidate');
- } else {
- $this->addHeader('Cache-Control', 'no-cache, must-revalidate');
- }
-
- }
-
-
- /**
- * Adds a new header to the response that will be called before the render
- * function
- * @param string $name The name of the HTTP header
- * @param string $value The value, null will delete it
- */
- public function addHeader($name, $value) {
- if(is_null($value)) {
- unset($this->headers[$name]);
- } else {
- $this->headers[$name] = $value;
- }
- }
-
-
- /**
- * Returns the set headers
- * @return array the headers
- */
- public function getHeaders() {
- $mergeWith = array();
-
- if($this->lastModified) {
- $mergeWith['Last-Modified'] =
- $this->lastModified->format(\DateTime::RFC2822);
- }
-
- if($this->ETag) {
- $mergeWith['ETag'] = '"' . $this->ETag . '"';
- }
-
- return array_merge($mergeWith, $this->headers);
- }
-
-
- /**
- * By default renders no output
- * @return null
- */
- public function render() {
- return null;
- }
-
-
- /**
- * Set response status
- * @param int $status a HTTP status code, see also the STATUS constants
- */
- public function setStatus($status) {
- $this->status = $status;
- }
-
-
- /**
- * Get response status
- */
- public function getStatus() {
- return $this->status;
- }
-
-
- /**
- * @return string the etag
- */
- public function getETag() {
- return $this->ETag;
- }
-
-
- /**
- * @return string RFC2822 formatted last modified date
- */
- public function getLastModified() {
- return $this->lastModified;
- }
-
-
- /**
- * @param string $ETag
- */
- public function setETag($ETag) {
- $this->ETag = $ETag;
- }
-
-
- /**
- * @param \DateTime $lastModified
- */
- public function setLastModified($lastModified) {
- $this->lastModified = $lastModified;
- }
-
-
-}
+++ /dev/null
-<?php
-
-/**
- * ownCloud - App Framework
- *
- * @author Bernhard Posselt
- * @copyright 2012 Bernhard Posselt nukeawhale@gmail.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 OC\AppFramework\Core\API;
-
-
-/**
- * Response for a normal template
- */
-class TemplateResponse extends Response {
-
- protected $templateName;
- protected $params;
- protected $api;
- protected $renderAs;
- protected $appName;
-
- /**
- * @param API $api an API instance
- * @param string $templateName the name of the template
- * @param string $appName optional if you want to include a template from
- * a different app
- */
- public function __construct(API $api, $templateName, $appName=null) {
- $this->templateName = $templateName;
- $this->appName = $appName;
- $this->api = $api;
- $this->params = array();
- $this->renderAs = 'user';
- }
-
-
- /**
- * Sets template parameters
- * @param array $params an array with key => value structure which sets template
- * variables
- */
- public function setParams(array $params){
- $this->params = $params;
- }
-
-
- /**
- * Used for accessing the set parameters
- * @return array the params
- */
- public function getParams(){
- return $this->params;
- }
-
-
- /**
- * Used for accessing the name of the set template
- * @return string the name of the used template
- */
- public function getTemplateName(){
- return $this->templateName;
- }
-
-
- /**
- * Sets the template page
- * @param string $renderAs admin, user or blank. Admin also prints the admin
- * settings header and footer, user renders the normal
- * normal page including footer and header and blank
- * just renders the plain template
- */
- public function renderAs($renderAs){
- $this->renderAs = $renderAs;
- }
-
-
- /**
- * Returns the set renderAs
- * @return string the renderAs value
- */
- public function getRenderAs(){
- return $this->renderAs;
- }
-
-
- /**
- * Returns the rendered html
- * @return string the rendered html
- */
- public function render(){
-
- if($this->appName !== null){
- $appName = $this->appName;
- } else {
- $appName = $this->api->getAppName();
- }
-
- $template = $this->api->getTemplate($this->templateName, $this->renderAs, $appName);
-
- foreach($this->params as $key => $value){
- $template->assign($key, $value);
- }
-
- return $template->fetchPage();
- }
-
-}
namespace OC\AppFramework\Middleware;
-use OC\AppFramework\Http\Response;
+use OCP\AppFramework\Http\Response;
/**
namespace OC\AppFramework\Middleware;
use OC\AppFramework\Controller\Controller;
-use OC\AppFramework\Http\Response;
+use OCP\AppFramework\Http\Response;
/**
use OC\AppFramework\Controller\Controller;
use OC\AppFramework\Http\Http;
use OC\AppFramework\Http\Request;
-use OC\AppFramework\Http\Response;
-use OC\AppFramework\Http\JSONResponse;
use OC\AppFramework\Http\RedirectResponse;
use OC\AppFramework\Utility\MethodAnnotationReader;
use OC\AppFramework\Middleware\Middleware;
use OC\AppFramework\Core\API;
+use OCP\AppFramework\Http\Response;
+use OCP\AppFramework\Http\JSONResponse;
/**
--- /dev/null
+<?php
+
+/**
+ * ownCloud - App Framework
+ *
+ * @author Bernhard Posselt, Thomas Tanghus, Bart Visscher
+ * @copyright 2012 Bernhard Posselt nukeawhale@gmail.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 OCP\AppFramework\Http;
+
+
+class Http {
+
+ const STATUS_CONTINUE = 100;
+ const STATUS_SWITCHING_PROTOCOLS = 101;
+ const STATUS_PROCESSING = 102;
+ const STATUS_OK = 200;
+ const STATUS_CREATED = 201;
+ const STATUS_ACCEPTED = 202;
+ const STATUS_NON_AUTHORATIVE_INFORMATION = 203;
+ const STATUS_NO_CONTENT = 204;
+ const STATUS_RESET_CONTENT = 205;
+ const STATUS_PARTIAL_CONTENT = 206;
+ const STATUS_MULTI_STATUS = 207;
+ const STATUS_ALREADY_REPORTED = 208;
+ const STATUS_IM_USED = 226;
+ const STATUS_MULTIPLE_CHOICES = 300;
+ const STATUS_MOVED_PERMANENTLY = 301;
+ const STATUS_FOUND = 302;
+ const STATUS_SEE_OTHER = 303;
+ const STATUS_NOT_MODIFIED = 304;
+ const STATUS_USE_PROXY = 305;
+ const STATUS_RESERVED = 306;
+ const STATUS_TEMPORARY_REDIRECT = 307;
+ const STATUS_BAD_REQUEST = 400;
+ const STATUS_UNAUTHORIZED = 401;
+ const STATUS_PAYMENT_REQUIRED = 402;
+ const STATUS_FORBIDDEN = 403;
+ const STATUS_NOT_FOUND = 404;
+ const STATUS_METHOD_NOT_ALLOWED = 405;
+ const STATUS_NOT_ACCEPTABLE = 406;
+ const STATUS_PROXY_AUTHENTICATION_REQUIRED = 407;
+ const STATUS_REQUEST_TIMEOUT = 408;
+ const STATUS_CONFLICT = 409;
+ const STATUS_GONE = 410;
+ const STATUS_LENGTH_REQUIRED = 411;
+ const STATUS_PRECONDITION_FAILED = 412;
+ const STATUS_REQUEST_ENTITY_TOO_LARGE = 413;
+ const STATUS_REQUEST_URI_TOO_LONG = 414;
+ const STATUS_UNSUPPORTED_MEDIA_TYPE = 415;
+ const STATUS_REQUEST_RANGE_NOT_SATISFIABLE = 416;
+ const STATUS_EXPECTATION_FAILED = 417;
+ const STATUS_IM_A_TEAPOT = 418;
+ const STATUS_UNPROCESSABLE_ENTITY = 422;
+ const STATUS_LOCKED = 423;
+ const STATUS_FAILED_DEPENDENCY = 424;
+ const STATUS_UPGRADE_REQUIRED = 426;
+ const STATUS_PRECONDITION_REQUIRED = 428;
+ const STATUS_TOO_MANY_REQUESTS = 429;
+ const STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE = 431;
+ const STATUS_INTERNAL_SERVER_ERROR = 500;
+ const STATUS_NOT_IMPLEMENTED = 501;
+ const STATUS_BAD_GATEWAY = 502;
+ const STATUS_SERVICE_UNAVAILABLE = 503;
+ const STATUS_GATEWAY_TIMEOUT = 504;
+ const STATUS_HTTP_VERSION_NOT_SUPPORTED = 505;
+ const STATUS_VARIANT_ALSO_NEGOTIATES = 506;
+ const STATUS_INSUFFICIENT_STORAGE = 507;
+ const STATUS_LOOP_DETECTED = 508;
+ const STATUS_BANDWIDTH_LIMIT_EXCEEDED = 509;
+ const STATUS_NOT_EXTENDED = 510;
+ const STATUS_NETWORK_AUTHENTICATION_REQUIRED = 511;
+}
--- /dev/null
+<?php
+
+/**
+ * ownCloud - App Framework
+ *
+ * @author Bernhard Posselt
+ * @copyright 2012 Bernhard Posselt nukeawhale@gmail.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 OCP\AppFramework\Http;
+
+
+/**
+ * A renderer for JSON calls
+ */
+class JSONResponse extends Response {
+
+ protected $data;
+
+
+ /**
+ * @param array|object $data the object or array that should be transformed
+ * @param int $statusCode the Http status code, defaults to 200
+ */
+ public function __construct($data=array(), $statusCode=Http::STATUS_OK) {
+ $this->data = $data;
+ $this->setStatus($statusCode);
+ $this->addHeader('X-Content-Type-Options', 'nosniff');
+ $this->addHeader('Content-type', 'application/json; charset=utf-8');
+ }
+
+
+ /**
+ * Returns the rendered json
+ * @return string the rendered json
+ */
+ public function render(){
+ return json_encode($this->data);
+ }
+
+ /**
+ * Sets values in the data json array
+ * @param array|object $params an array or object which will be transformed
+ * to JSON
+ */
+ public function setData($data){
+ $this->data = $data;
+ }
+
+
+ /**
+ * Used to get the set parameters
+ * @return array the data
+ */
+ public function getData(){
+ return $this->data;
+ }
+
+}
--- /dev/null
+<?php
+
+/**
+ * ownCloud - App Framework
+ *
+ * @author Bernhard Posselt, Thomas Tanghus, Bart Visscher
+ * @copyright 2012 Bernhard Posselt nukeawhale@gmail.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 OCP\AppFramework\Http;
+
+
+/**
+ * Base class for responses. Also used to just send headers
+ */
+class Response {
+
+ /**
+ * @var array default headers
+ */
+ private $headers = array(
+ 'Cache-Control' => 'no-cache, must-revalidate'
+ );
+
+
+ /**
+ * @var string
+ */
+ private $status = Http::STATUS_OK;
+
+
+ /**
+ * @var \DateTime
+ */
+ private $lastModified;
+
+
+ /**
+ * @var string
+ */
+ private $ETag;
+
+
+ /**
+ * Caches the response
+ * @param int $cacheSeconds the amount of seconds that should be cached
+ * if 0 then caching will be disabled
+ */
+ public function cacheFor($cacheSeconds) {
+
+ if($cacheSeconds > 0) {
+ $this->addHeader('Cache-Control', 'max-age=' . $cacheSeconds .
+ ', must-revalidate');
+ } else {
+ $this->addHeader('Cache-Control', 'no-cache, must-revalidate');
+ }
+
+ }
+
+
+ /**
+ * Adds a new header to the response that will be called before the render
+ * function
+ * @param string $name The name of the HTTP header
+ * @param string $value The value, null will delete it
+ */
+ public function addHeader($name, $value) {
+ if(is_null($value)) {
+ unset($this->headers[$name]);
+ } else {
+ $this->headers[$name] = $value;
+ }
+ }
+
+
+ /**
+ * Returns the set headers
+ * @return array the headers
+ */
+ public function getHeaders() {
+ $mergeWith = array();
+
+ if($this->lastModified) {
+ $mergeWith['Last-Modified'] =
+ $this->lastModified->format(\DateTime::RFC2822);
+ }
+
+ if($this->ETag) {
+ $mergeWith['ETag'] = '"' . $this->ETag . '"';
+ }
+
+ return array_merge($mergeWith, $this->headers);
+ }
+
+
+ /**
+ * By default renders no output
+ * @return null
+ */
+ public function render() {
+ return null;
+ }
+
+
+ /**
+ * Set response status
+ * @param int $status a HTTP status code, see also the STATUS constants
+ */
+ public function setStatus($status) {
+ $this->status = $status;
+ }
+
+
+ /**
+ * Get response status
+ */
+ public function getStatus() {
+ return $this->status;
+ }
+
+
+ /**
+ * @return string the etag
+ */
+ public function getETag() {
+ return $this->ETag;
+ }
+
+
+ /**
+ * @return string RFC2822 formatted last modified date
+ */
+ public function getLastModified() {
+ return $this->lastModified;
+ }
+
+
+ /**
+ * @param string $ETag
+ */
+ public function setETag($ETag) {
+ $this->ETag = $ETag;
+ }
+
+
+ /**
+ * @param \DateTime $lastModified
+ */
+ public function setLastModified($lastModified) {
+ $this->lastModified = $lastModified;
+ }
+
+
+}
--- /dev/null
+<?php
+
+/**
+ * ownCloud - App Framework
+ *
+ * @author Bernhard Posselt
+ * @copyright 2012 Bernhard Posselt nukeawhale@gmail.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 OCP\AppFramework\Http;
+
+use OC\AppFramework\Core\API;
+
+
+/**
+ * Response for a normal template
+ */
+class TemplateResponse extends Response {
+
+ protected $templateName;
+ protected $params;
+ protected $api;
+ protected $renderAs;
+ protected $appName;
+
+ /**
+ * @param API $api an API instance
+ * @param string $templateName the name of the template
+ * @param string $appName optional if you want to include a template from
+ * a different app
+ */
+ public function __construct(API $api, $templateName, $appName=null) {
+ $this->templateName = $templateName;
+ $this->appName = $appName;
+ $this->api = $api;
+ $this->params = array();
+ $this->renderAs = 'user';
+ }
+
+
+ /**
+ * Sets template parameters
+ * @param array $params an array with key => value structure which sets template
+ * variables
+ */
+ public function setParams(array $params){
+ $this->params = $params;
+ }
+
+
+ /**
+ * Used for accessing the set parameters
+ * @return array the params
+ */
+ public function getParams(){
+ return $this->params;
+ }
+
+
+ /**
+ * Used for accessing the name of the set template
+ * @return string the name of the used template
+ */
+ public function getTemplateName(){
+ return $this->templateName;
+ }
+
+
+ /**
+ * Sets the template page
+ * @param string $renderAs admin, user or blank. Admin also prints the admin
+ * settings header and footer, user renders the normal
+ * normal page including footer and header and blank
+ * just renders the plain template
+ */
+ public function renderAs($renderAs){
+ $this->renderAs = $renderAs;
+ }
+
+
+ /**
+ * Returns the set renderAs
+ * @return string the renderAs value
+ */
+ public function getRenderAs(){
+ return $this->renderAs;
+ }
+
+
+ /**
+ * Returns the rendered html
+ * @return string the rendered html
+ */
+ public function render(){
+
+ if($this->appName !== null){
+ $appName = $this->appName;
+ } else {
+ $appName = $this->api->getAppName();
+ }
+
+ $template = $this->api->getTemplate($this->templateName, $this->renderAs, $appName);
+
+ foreach($this->params as $key => $value){
+ $template->assign($key, $value);
+ }
+
+ return $template->fetchPage();
+ }
+
+}