aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files/controller/apicontroller.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files/controller/apicontroller.php')
-rw-r--r--apps/files/controller/apicontroller.php56
1 files changed, 55 insertions, 1 deletions
diff --git a/apps/files/controller/apicontroller.php b/apps/files/controller/apicontroller.php
index 89d24a5c47f..902731a0492 100644
--- a/apps/files/controller/apicontroller.php
+++ b/apps/files/controller/apicontroller.php
@@ -12,13 +12,21 @@ use OCP\AppFramework\Http;
use OCP\AppFramework\Controller;
use OCP\IRequest;
use OCP\AppFramework\Http\JSONResponse;
+use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Http\DownloadResponse;
use OC\Preview;
+use OCA\Files\Service\TagService;
class ApiController extends Controller {
- public function __construct($appName, IRequest $request){
+ /**
+ * @var TagService $tagService
+ */
+ private $tagService;
+
+ public function __construct($appName, IRequest $request, TagService $tagService){
parent::__construct($appName, $request);
+ $this->tagService = $tagService;
}
@@ -49,4 +57,50 @@ class ApiController extends Controller {
}
}
+ /**
+ * Updates the info of the specified file path
+ * The passed tags are absolute, which means they will
+ * replace the actual tag selection.
+ *
+ * @NoAdminRequired
+ * @CORS
+ *
+ * @param string $path path
+ * @param array $tags array of tags
+ */
+ public function updateFileTags($path, $tags = null) {
+ $result = array();
+ // if tags specified or empty array, update tags
+ if (!is_null($tags)) {
+ try {
+ $this->tagService->updateFileTags($path, $tags);
+ } catch (\OCP\Files\NotFoundException $e) {
+ return new DataResponse($e->getMessage(), Http::STATUS_NOT_FOUND);
+ }
+ $result['tags'] = $tags;
+ }
+ return new DataResponse($result, Http::STATUS_OK);
+ }
+
+ /**
+ * Returns a list of all files tagged with the given tag.
+ *
+ * @NoAdminRequired
+ * @CORS
+ *
+ * @param array $tagName tag name to filter by
+ */
+ public function getFilesByTag($tagName) {
+ $files = array();
+ $fileInfos = $this->tagService->getFilesByTag($tagName);
+ foreach ($fileInfos as &$fileInfo) {
+ $file = \OCA\Files\Helper::formatFileInfo($fileInfo);
+ $parts = explode('/', dirname($fileInfo->getPath()), 4);
+ $file['path'] = '/' . $parts[3];
+ $file['tags'] = array($tagName);
+ $files[] = $file;
+ }
+ return new DataResponse(array('files' => $files), Http::STATUS_OK);
+ }
+
}