Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/text.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2019-10-16 11:33:39 +0300
committerJulius Härtl <jus@bitgrid.net>2019-12-02 14:28:30 +0300
commitbaa11f406390cca2a890c16bf1cf0b404b2fc700 (patch)
tree4e3d7eb0b39fb23650f89c56e93432041527e272 /lib/Controller
parent2dee8b69ce453e7bc0ebcec28cf375f7742d75d8 (diff)
Start with direct editing
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'lib/Controller')
-rw-r--r--lib/Controller/DirectSessionController.php141
-rw-r--r--lib/Controller/SessionController.php4
2 files changed, 145 insertions, 0 deletions
diff --git a/lib/Controller/DirectSessionController.php b/lib/Controller/DirectSessionController.php
new file mode 100644
index 000000000..aef43873e
--- /dev/null
+++ b/lib/Controller/DirectSessionController.php
@@ -0,0 +1,141 @@
+<?php
+/**
+ * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <jus@bitgrid.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <jus@bitgrid.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Text\Controller;
+
+use OC\Authentication\Exceptions\InvalidTokenException;
+use OCA\Text\Service\ApiService;
+use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http\Response;
+use OCP\AppFramework\PublicShareController;
+use OCP\DirectEditing\IManager;
+use OCP\ISession;
+use OCP\Share\Exceptions\ShareNotFound;
+use OCP\Share\IManager as ShareManager;
+use OCP\AppFramework\Http\DataResponse;
+use OCP\IRequest;
+use OCP\Share\IShare;
+
+class DirectSessionController extends Controller {
+
+ /** @var ShareManager */
+ private $shareManager;
+
+ /** @var IShare */
+ private $share;
+
+ /** @var ApiService */
+ private $apiService;
+ /** @var IManager */
+ private $directManager;
+
+ public function __construct(string $appName, IRequest $request, ShareManager $shareManager, ApiService $apiService, IManager $directManager) {
+ parent::__construct($appName, $request);
+ $this->shareManager = $shareManager;
+ $this->apiService = $apiService;
+ $this->directManager = $directManager;
+ }
+
+ /**
+ * @PublicPage
+ */
+ public function create(string $token, string $file = null, $guestName = null, bool $forceRecreate = false): DataResponse {
+ try {
+ $tokenObject = $this->directManager->getToken($token);
+ $tokenObject->extend();
+ $tokenObject->useTokenScope();
+ $node = $tokenObject->getFile();
+ $node->touch();
+ return new DataResponse([
+ 'mtime' => $node->getMTime()
+ ]);
+ } catch (InvalidTokenException $e) {
+ return new DataResponse('error');
+ }
+ //return $this->apiService->create(null, $file, $token, $guestName, $forceRecreate);
+ }
+
+ /**
+ * @NoAdminRequired
+ * @PublicPage
+ */
+ public function fetch(int $documentId, string $sessionId, string $sessionToken): Response {
+ return $this->apiService->fetch($documentId, $sessionId, $sessionToken);
+ }
+
+ /**
+ * @NoAdminRequired
+ * @PublicPage
+ */
+ public function close(int $documentId, int $sessionId, string $sessionToken): DataResponse {
+ return $this->apiService->close($documentId, $sessionId, $sessionToken);
+ }
+
+ /**
+ * @NoAdminRequired
+ * @PublicPage
+ */
+ public function push(int $documentId, int $sessionId, string $sessionToken, int $version, array $steps, string $token): DataResponse {
+ return $this->apiService->push($documentId, $sessionId, $sessionToken, $version, $steps, $token);
+ }
+
+ /**
+ * @NoAdminRequired
+ * @PublicPage
+ */
+ public function sync(string $token, int $documentId, int $sessionId, string $sessionToken, int $version = 0, string $autosaveContent = null, bool $force = false, bool $manualSave = false): DataResponse {
+ return $this->apiService->sync($documentId, $sessionId, $sessionToken, $version, $autosaveContent, $force, $manualSave, $token);
+ }
+
+ /**
+ * @NoAdminRequired
+ * @PublicPage
+ */
+ public function updateSession(int $documentId, int $sessionId, string $sessionToken, string $guestName) {
+ return $this->apiService->updateSession($documentId, $sessionId, $sessionToken, $guestName);
+ }
+
+}
diff --git a/lib/Controller/SessionController.php b/lib/Controller/SessionController.php
index 28660cb77..ff95a6cd9 100644
--- a/lib/Controller/SessionController.php
+++ b/lib/Controller/SessionController.php
@@ -51,6 +51,7 @@ class SessionController extends Controller {
/**
* @NoAdminRequired
+ * @PublicPage
*/
public function fetch(int $documentId, int $sessionId, string $sessionToken): Response {
return $this->apiService->fetch($documentId, $sessionId, $sessionToken);
@@ -58,6 +59,7 @@ class SessionController extends Controller {
/**
* @NoAdminRequired
+ * @PublicPage
*/
public function close(int $documentId, int $sessionId, string $sessionToken): DataResponse {
return $this->apiService->close($documentId, $sessionId, $sessionToken);
@@ -65,6 +67,7 @@ class SessionController extends Controller {
/**
* @NoAdminRequired
+ * @PublicPage
*/
public function push(int $documentId, int $sessionId, string $sessionToken, int $version, array $steps): DataResponse {
return $this->apiService->push($documentId, $sessionId, $sessionToken, $version, $steps);
@@ -72,6 +75,7 @@ class SessionController extends Controller {
/**
* @NoAdminRequired
+ * @PublicPage
*/
public function sync(int $documentId, int $sessionId, string $sessionToken, int $version = 0, string $autosaveContent = null, bool $force = false, bool $manualSave = false): DataResponse {
return $this->apiService->sync($documentId, $sessionId, $sessionToken, $version, $autosaveContent, $force, $manualSave);