aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2014-09-16 19:31:51 +0200
committerLukas Reschke <lukas@owncloud.com>2014-09-16 19:31:51 +0200
commit368391e40138739f6a02ad6cd44a925bdff970a8 (patch)
treee1c6f7ed88107b80b1f1ed18e01f77c6fe36dadc /apps
parent4ebc11aa8d44a8188d43b9f884bd306b4a2fc7a3 (diff)
parente62d5b7e55ea5eab098751146f6c49641574c7c9 (diff)
downloadnextcloud-server-368391e40138739f6a02ad6cd44a925bdff970a8.tar.gz
nextcloud-server-368391e40138739f6a02ad6cd44a925bdff970a8.zip
Merge pull request #11009 from owncloud/tobiasKaminsky-route
REST API for thumbnails
Diffstat (limited to 'apps')
-rw-r--r--apps/files/appinfo/application.php31
-rw-r--r--apps/files/appinfo/routes.php12
-rw-r--r--apps/files/controller/apicontroller.php52
3 files changed, 93 insertions, 2 deletions
diff --git a/apps/files/appinfo/application.php b/apps/files/appinfo/application.php
new file mode 100644
index 00000000000..7ca48bab474
--- /dev/null
+++ b/apps/files/appinfo/application.php
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Copyright (c) 2014 Lukas Reschke <lukas@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCA\Files\Appinfo;
+
+use OC\AppFramework\Utility\SimpleContainer;
+use OCA\Files\Controller\ApiController;
+use OCP\AppFramework\App;
+
+class Application extends App {
+ public function __construct(array $urlParams=array()) {
+ parent::__construct('files', $urlParams);
+ $container = $this->getContainer();
+
+
+ /**
+ * Controllers
+ */
+ $container->registerService('APIController', function (SimpleContainer $c) {
+ return new ApiController(
+ $c->query('AppName'),
+ $c->query('Request')
+ );
+ });
+ }
+}
diff --git a/apps/files/appinfo/routes.php b/apps/files/appinfo/routes.php
index 4d77065a347..a99b5de3af9 100644
--- a/apps/files/appinfo/routes.php
+++ b/apps/files/appinfo/routes.php
@@ -6,7 +6,15 @@
* See the COPYING-README file.
*/
-/** @var $this OC\Route\Router */
+namespace OCA\Files\Appinfo;
+
+$application = new Application();
+$application->registerRoutes($this, array('routes' => array(
+ array('name' => 'API#getThumbnail', 'url' => '/api/v1/thumbnail/{x}/{y}/{file}', 'verb' => 'GET'),
+)));
+
+
+/** @var $this \OC\Route\Router */
$this->create('files_index', '/')
->actionInclude('files/index.php');
@@ -38,4 +46,4 @@ $this->create('download', 'download{file}')
->actionInclude('files/download.php');
// Register with the capabilities API
-OC_API::register('get', '/cloud/capabilities', array('OCA\Files\Capabilities', 'getCapabilities'), 'files', OC_API::USER_AUTH);
+\OC_API::register('get', '/cloud/capabilities', array('OCA\Files\Capabilities', 'getCapabilities'), 'files', \OC_API::USER_AUTH);
diff --git a/apps/files/controller/apicontroller.php b/apps/files/controller/apicontroller.php
new file mode 100644
index 00000000000..01f9086c27d
--- /dev/null
+++ b/apps/files/controller/apicontroller.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * Copyright (c) 2014 Lukas Reschke <lukas@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCA\Files\Controller;
+
+use OCP\AppFramework\Http;
+use OCP\AppFramework\Controller;
+use OCP\IRequest;
+use OCP\AppFramework\Http\JSONResponse;
+use OCP\AppFramework\Http\DownloadResponse;
+use OC\Preview;
+
+class ApiController extends Controller {
+
+ public function __construct($appName, IRequest $request){
+ parent::__construct($appName, $request);
+ }
+
+
+ /**
+ * Gets a thumbnail of the specified file
+ *
+ * @since API version 1.0
+ *
+ * @NoAdminRequired
+ * @NoCSRFRequired
+ *
+ * @param int $x
+ * @param int $y
+ * @param string $file
+ * @return JSONResponse|DownloadResponse
+ */
+ public function getThumbnail($x, $y, $file) {
+ if($x < 1 || $y < 1) {
+ return new JSONResponse('Requested size must be numeric and a positive value.', Http::STATUS_BAD_REQUEST);
+ }
+
+ try {
+ $preview = new Preview('', 'files', $file, $x, $y, true);
+ echo($preview->showPreview('image/png'));
+ return new DownloadResponse($file.'.png', 'image/png');
+ } catch (\Exception $e) {
+ return new JSONResponse('File not found.', Http::STATUS_NOT_FOUND);
+ }
+ }
+
+}