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-05-14 10:34:30 +0300
committerJulius Härtl <jus@bitgrid.net>2019-05-14 10:34:30 +0300
commitfe6272f411f502b5734f74270f62fed17a0a8156 (patch)
treea518a1d6b1ffb0def71ea30d72502909dc858cf2 /lib/Controller/PublicSessionController.php
parentfd1e342338fbf6007ccbcd4fc2a34cdf8c8b2140 (diff)
Add public endpoints
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'lib/Controller/PublicSessionController.php')
-rw-r--r--lib/Controller/PublicSessionController.php74
1 files changed, 64 insertions, 10 deletions
diff --git a/lib/Controller/PublicSessionController.php b/lib/Controller/PublicSessionController.php
index 446b02fde..ee5b446fc 100644
--- a/lib/Controller/PublicSessionController.php
+++ b/lib/Controller/PublicSessionController.php
@@ -26,26 +26,80 @@ declare(strict_types=1);
namespace OCA\Text\Controller;
-use OCP\AppFramework\Controller;
+use OCA\Text\Service\ApiService;
+use OCP\AppFramework\Http\Response;
+use OCP\AppFramework\PublicShareController;
+use OCP\ISession;
+use OCP\Share\Exceptions\ShareNotFound;
+use OCP\Share\IManager as ShareManager;
use OCP\AppFramework\Http\DataResponse;
-use OCP\AppFramework\Http\FileDisplayResponse;
-use OCP\Files\IRootFolder;
-use OCP\ICacheFactory;
use OCP\IRequest;
-use OCP\ITempManager;
-use OCP\Security\ISecureRandom;
+use OCP\Share\IShare;
-class PublicSessionController extends SessionController {
+class PublicSessionController extends PublicShareController {
+
+ /** @var ShareManager */
+ private $shareManager;
+
+ /** @var IShare */
+ private $share;
+
+ /** @var ApiService */
+ private $apiService;
+
+ public function __construct(string $appName, IRequest $request, ISession $session, ShareManager $shareManager, ApiService $apiService) {
+ parent::__construct($appName, $request, $session);
+ $this->shareManager = $shareManager;
+ $this->apiService = $apiService;
+ }
+
+ protected function getPasswordHash(): string {
+ return $this->share->getPassword();
+ }
+
+ public function isValidToken(): bool {
+ try {
+ $this->share = $this->shareManager->getShareByToken($this->getToken());
+ return true;
+ } catch (ShareNotFound $e) {
+ return false;
+ }
+ }
+
+ protected function isPasswordProtected(): bool {
+ return $this->share->getPassword() !== null;
+ }
/**
- * TODO: maybe set guestUserId in middleware
+ * @NoAdminRequired
+ * @PublicPage
*/
+ public function create(string $token, string $file = null): DataResponse {
+ return $this->apiService->create(null, $file, $token);
+ }
+
+ /**
+ * @NoAdminRequired
+ * @PublicPage
+ */
+ public function fetch(int $documentId, string $sessionId, string $sessionToken): Response {
+ return $this->apiService->fetch($documentId, $sessionId, $sessionToken);
+ }
+
+ /**
+ * @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);
+ }
/**
+ * @NoAdminRequired
* @PublicPage
*/
- public function push($transaction): DataResponse {
- parent::push($transaction);
+ 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);
}
}