diff options
author | dartcafe <github@dartcafe.de> | 2020-06-27 20:22:17 +0300 |
---|---|---|
committer | dartcafe <github@dartcafe.de> | 2020-06-27 20:22:17 +0300 |
commit | 40b2720d0d1c74ed3a2a12497185d47fb0b7ab29 (patch) | |
tree | bb3980a11cfd102d2205b5c38ad5799250a951ba /lib | |
parent | fd1779a07d81d21f5ba186de522a862693bd3677 (diff) |
some polish
Diffstat (limited to 'lib')
-rw-r--r-- | lib/AppInfo/Application.php | 13 | ||||
-rw-r--r-- | lib/Controller/CommentApiController.php | 8 | ||||
-rw-r--r-- | lib/Controller/OptionApiController.php | 8 | ||||
-rw-r--r-- | lib/Controller/PollApiController.php | 14 | ||||
-rw-r--r-- | lib/Controller/PollController.php | 95 | ||||
-rw-r--r-- | lib/Controller/ShareApiController.php | 8 | ||||
-rw-r--r-- | lib/Controller/VoteApiController.php | 4 | ||||
-rw-r--r-- | lib/Db/Poll.php | 14 | ||||
-rw-r--r-- | lib/Service/PollService.php | 84 |
9 files changed, 137 insertions, 111 deletions
diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 7a88db86..53922944 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -23,19 +23,6 @@ namespace OCA\Polls\AppInfo; -// use OCA\Polls\Controller\PageController; -// use OCA\Polls\Controller\ApiController; -// use OCA\Polls\Controller\CommentController; -// use OCA\Polls\Controller\PollController; -// use OCA\Polls\Controller\NotificationController; -// use OCA\Polls\Controller\OptionController; -// use OCA\Polls\Controller\VoteController; -// use OCA\Polls\Controller\ShareController; -// use OCA\Polls\Db\OptionMapper; -// use OCA\Polls\Db\PollMapper; -// use OCA\Polls\Db\NotificationMapper; -// use OCA\Polls\Db\VoteMapper; -// use OCA\Polls\Db\ShareMapper; use OCP\AppFramework\App; use OCP\IContainer; diff --git a/lib/Controller/CommentApiController.php b/lib/Controller/CommentApiController.php index ad09654d..6cc56bba 100644 --- a/lib/Controller/CommentApiController.php +++ b/lib/Controller/CommentApiController.php @@ -72,7 +72,7 @@ class CommentApiController extends ApiController { */ public function list($pollId) { try { - return new DataResponse($this->commentService->list($pollId), Http::STATUS_OK); + return new DataResponse(['comments' => $this->commentService->list($pollId)], Http::STATUS_OK); } catch (DoesNotExistException $e) { return new DataResponse(['error' => 'Poll with id ' . $pollId . ' not found'], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { @@ -91,7 +91,7 @@ class CommentApiController extends ApiController { */ public function add($pollId, $message) { try { - return new DataResponse($this->commentService->add($pollId, $message), Http::STATUS_CREATED); + return new DataResponse(['comment' => $this->commentService->add($pollId, $message)], Http::STATUS_CREATED); } catch (DoesNotExistException $e) { return new DataResponse(['error' => 'Poll with id ' . $pollId . ' not found'], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { @@ -109,9 +109,9 @@ class CommentApiController extends ApiController { */ public function delete($commentId) { try { - return new DataResponse($this->commentService->delete($commentId), Http::STATUS_OK); + return new DataResponse(['comment' => $this->commentService->delete($commentId)], Http::STATUS_OK); } catch (DoesNotExistException $e) { - return new DataResponse(['error' => 'Comment does not exist'], Http::STATUS_NOT_FOUND); + return new DataResponse(['error' => 'Comment id ' . $commentId . ' does not exist'], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { return new DataResponse(['error' => $e->getMessage()], $e->getStatus()); } diff --git a/lib/Controller/OptionApiController.php b/lib/Controller/OptionApiController.php index 5809510d..e3396a3e 100644 --- a/lib/Controller/OptionApiController.php +++ b/lib/Controller/OptionApiController.php @@ -70,7 +70,7 @@ class OptionApiController extends ApiController { */ public function list($pollId) { try { - return new DataResponse($this->optionService->list($pollId), Http::STATUS_OK); + return new DataResponse(['options' => $this->optionService->list($pollId)], Http::STATUS_OK); } catch (DoesNotExistException $e) { return new DataResponse(['error' => 'Poll with id ' . $pollId . ' not found'], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { @@ -97,7 +97,7 @@ class OptionApiController extends ApiController { ]; try { - return new DataResponse($this->optionService->add($option), Http::STATUS_CREATED); + return new DataResponse(['option' => $this->optionService->add($option)], Http::STATUS_CREATED); } catch (DoesNotExistException $e) { return new DataResponse(['error' => 'Poll with id ' . $pollId . ' not found'], Http::STATUS_NOT_FOUND); } catch (UniqueConstraintViolationException $e) { @@ -118,7 +118,7 @@ class OptionApiController extends ApiController { */ public function update($option) { try { - return new DataResponse($this->optionService->update($option), Http::STATUS_OK); + return new DataResponse(['option' => $this->optionService->update($option)], Http::STATUS_OK); } catch (NotAuthorizedException $e) { return new DataResponse(['error' => $e->getMessage()], $e->getStatus()); } @@ -134,7 +134,7 @@ class OptionApiController extends ApiController { */ public function delete($optionId) { try { - return new DataResponse($this->optionService->delete($optionId), Http::STATUS_OK); + return new DataResponse(['option' => $this->optionService->delete($optionId)], Http::STATUS_OK); } catch (DoesNotExistException $e) { return new DataResponse(['error' => 'Option does not exist'], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { diff --git a/lib/Controller/PollApiController.php b/lib/Controller/PollApiController.php index 3dcca2dd..3c8acc9d 100644 --- a/lib/Controller/PollApiController.php +++ b/lib/Controller/PollApiController.php @@ -75,7 +75,7 @@ public function list() { try { - return new DataResponse($this->pollService->list(), Http::STATUS_OK); + return new DataResponse(['polls' => $this->pollService->list()], Http::STATUS_OK); } catch (DoesNotExistException $e) { return new DataResponse([], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { @@ -93,7 +93,7 @@ */ public function get($pollId) { try { - return new DataResponse($this->pollService->get($pollId), Http::STATUS_OK); + return new DataResponse(['poll' => $this->pollService->get($pollId)], Http::STATUS_OK); } catch (DoesNotExistException $e) { return new DataResponse(['error' => 'Not found'], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { @@ -111,7 +111,7 @@ public function add($type, $title) { try { - return new DataResponse($this->pollService->add($type, $title), Http::STATUS_CREATED); + return new DataResponse(['poll' => $this->pollService->add($type, $title)], Http::STATUS_CREATED); } catch (NotAuthorizedException $e) { return new DataResponse(['error' => $e->getMessage()], $e->getStatus()); } catch (InvalidPollTypeException $e) { @@ -131,7 +131,7 @@ public function update($pollId, $poll) { try { - return new DataResponse($this->pollService->update($pollId, $poll), Http::STATUS_OK); + return new DataResponse(['poll' => $this->pollService->update($pollId, $poll)], Http::STATUS_OK); } catch (DoesNotExistException $e) { return new DataResponse(['error' => 'Poll not found'], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { @@ -155,7 +155,7 @@ public function delete($pollId) { try { - return new DataResponse($this->pollService->delete($pollId), Http::STATUS_OK); + return new DataResponse(['poll' => $this->pollService->delete($pollId)], Http::STATUS_OK); } catch (DoesNotExistException $e) { return new DataResponse(['error' => 'Poll not found'], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { @@ -173,7 +173,7 @@ public function deletePermanently($pollId) { try { - return new DataResponse($this->pollService->deletePermanently($pollId), Http::STATUS_OK); + return new DataResponse(['poll' => $this->pollService->deletePermanently($pollId)], Http::STATUS_OK); } catch (DoesNotExistException $e) { return new DataResponse(['error' => 'Poll not found'], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { @@ -191,7 +191,7 @@ */ public function clone($pollId) { try { - return new DataResponse($this->pollService->clone($pollId), Http::STATUS_CREATED); + return new DataResponse(['poll' => $this->pollService->clone($pollId)], Http::STATUS_CREATED); } catch (DoesNotExistException $e) { return new DataResponse(['error' => 'Poll not found'], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { diff --git a/lib/Controller/PollController.php b/lib/Controller/PollController.php index aa4a5899..071dde17 100644 --- a/lib/Controller/PollController.php +++ b/lib/Controller/PollController.php @@ -38,11 +38,21 @@ use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; use OCA\Polls\Service\PollService; +use OCA\Polls\Service\CommentService; +use OCA\Polls\Service\OptionService; +use OCA\Polls\Service\ShareService; +use OCA\Polls\Service\VoteService; +use OCA\Polls\Model\Acl; - class PollController extends Controller { +class PollController extends Controller { - private $logger; - private $pollService; + private $logger; + private $pollService; + private $commentService; + private $optionService; + private $shareService; + private $voteService; + private $acl; /** * PollController constructor. @@ -50,18 +60,33 @@ use OCA\Polls\Service\PollService; * @param IRequest $request * @param ILogger $logger * @param PollService $pollService - */ + * @param CommentService $commentService + * @param OptionService $optionService + * @param ShareService $shareService + * @param VoteService $voteService + * @param Acl $acl + */ public function __construct( string $appName, IRequest $request, ILogger $logger, - PollService $pollService - ) { + PollService $pollService, + CommentService $commentService, + OptionService $optionService, + ShareService $shareService, + VoteService $voteService, + Acl $acl + ) { parent::__construct($appName, $request); - $this->pollService = $pollService; - $this->logger = $logger; - } + $this->logger = $logger; + $this->pollService = $pollService; + $this->commentService = $commentService; + $this->optionService = $optionService; + $this->shareService = $shareService; + $this->voteService = $voteService; + $this->acl = $acl; + } /** @@ -92,12 +117,54 @@ use OCA\Polls\Service\PollService; */ public function get($pollId, $token) { try { - return new DataResponse($this->pollService->get($pollId, $token), Http::STATUS_OK); + if ($token) { + $poll = $this->pollService->get(0, $token); + $acl = $this->acl->setToken($token); + } else { + $poll = $this->pollService->get($pollId); + $acl = $this->acl->setPollId($pollId); + } + + // $this->poll = $this->pollService->get($pollId, $token); + // return new DataResponse($this->pollService->get($pollId, $token), Http::STATUS_OK); } catch (DoesNotExistException $e) { return new DataResponse(['error' => 'Not found'], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { return new DataResponse(['error' => $e->getMessage()], $e->getStatus()); } + + try { + $comments = $this->commentService->list($pollId, $token); + } catch (Exception $e) { + $comments = []; + } + + try { + $options = $this->optionService->list($pollId, $token); + } catch (Exception $e) { + $options = []; + } + + try { + $votes = $this->voteService->list($pollId, $token); + } catch (Exception $e) { + $votes = []; + } + + try { + $shares = $this->shareService->list($pollId); + } catch (Exception $e) { + $shares = []; + } + + return new DataResponse([ + 'acl' => $acl, + 'poll' => $poll, + 'comments' => $comments, + 'options' => $options, + 'shares' => $shares, + 'votes' => $votes + ], Http::STATUS_OK); } /** @@ -138,10 +205,11 @@ use OCA\Polls\Service\PollService; /** - * write + * add * @NoAdminRequired * @NoCSRFRequired - * @param Array $poll + * @param string $type + * @param string $title * @return DataResponse */ @@ -161,7 +229,8 @@ use OCA\Polls\Service\PollService; * write * @NoAdminRequired * @NoCSRFRequired - * @param Array $poll + * @param integer $pollId + * @param array $poll * @return DataResponse */ diff --git a/lib/Controller/ShareApiController.php b/lib/Controller/ShareApiController.php index 4f147fad..cceb7aa6 100644 --- a/lib/Controller/ShareApiController.php +++ b/lib/Controller/ShareApiController.php @@ -71,7 +71,7 @@ class ShareApiController extends ApiController { */ public function list($pollId) { try { - return new DataResponse($this->shareService->list($pollId), Http::STATUS_OK); + return new DataResponse(['shares' => $this->shareService->list($pollId)], Http::STATUS_OK); } catch (DoesNotExistException $e) { return new DataResponse(['error' => 'No shares for poll with id ' . $pollId . ' not found'], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { @@ -90,7 +90,7 @@ class ShareApiController extends ApiController { */ public function get($token) { try { - return new DataResponse($this->shareService->get($token), Http::STATUS_OK); + return new DataResponse(['share' => $this->shareService->get($token)], Http::STATUS_OK); } catch (DoesNotExistException $e) { return new DataResponse(['error' => 'Token ' . $token . ' not found'], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { @@ -111,7 +111,7 @@ class ShareApiController extends ApiController { */ public function add($pollId, $type, $userId = '', $userEmail = '') { try { - return new DataResponse($this->shareService->add($pollId, $type, $userId, $userEmail), Http::STATUS_CREATED); + return new DataResponse(['share' => $this->shareService->add($pollId, $type, $userId, $userEmail)], Http::STATUS_CREATED); } catch (\Exception $e) { return new DataResponse(['error' => $e], Http::STATUS_CONFLICT); } catch (NotAuthorizedException $e) { @@ -131,7 +131,7 @@ class ShareApiController extends ApiController { public function delete($token) { try { - return new DataResponse($this->shareService->remove($token), Http::STATUS_OK); + return new DataResponse(['share' => $this->shareService->remove($token)], Http::STATUS_OK); } catch (NotAuthorizedException $e) { return new DataResponse(['error' => $e->getMessage()], $e->getStatus()); } catch (Exception $e) { diff --git a/lib/Controller/VoteApiController.php b/lib/Controller/VoteApiController.php index 03caea0f..21d7762d 100644 --- a/lib/Controller/VoteApiController.php +++ b/lib/Controller/VoteApiController.php @@ -73,7 +73,7 @@ class VoteApiController extends ApiController { */ public function list($pollId) { try { - return new DataResponse($this->voteService->list($pollId), Http::STATUS_OK); + return new DataResponse(['votes' => $this->voteService->list($pollId)], Http::STATUS_OK); } catch (DoesNotExistException $e) { return new DataResponse(['error' => 'No votes'], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { @@ -94,7 +94,7 @@ class VoteApiController extends ApiController { */ public function set($pollId, $pollOptionText, $setTo) { try { - return new DataResponse($this->voteService->set($pollId, $pollOptionText, $setTo), Http::STATUS_OK); + return new DataResponse(['vote' => $this->voteService->set($pollId, $pollOptionText, $setTo)], Http::STATUS_OK); } catch (DoesNotExistException $e) { return new DataResponse(['error' => 'Option not found'], Http::STATUS_NOT_FOUND); } catch (NotAuthorizedException $e) { diff --git a/lib/Db/Poll.php b/lib/Db/Poll.php index 55b12fa2..8fa2d056 100644 --- a/lib/Db/Poll.php +++ b/lib/Db/Poll.php @@ -135,6 +135,20 @@ class Poll extends Entity implements JsonSerializable { ]; } + public function deserializeArray($array) { + $this->setTitle(isset($array['title']) ? $array['title'] : $this->getTitle()); + $this->setDescription(isset($array['description']) ? $array['description'] : $this->getDescription()); + $this->setAccess(isset($array['access']) ? $array['access'] : $this->getAccess()); + $this->setExpire(isset($array['expire']) ? $array['expire'] : $this->getExpire()); + $this->setAnonymous(isset($array['anonymous']) ? $array['anonymous'] : $this->getAnonymous()); + $this->setAllowMaybe(isset($array['allowMaybe']) ? $array['allowMaybe'] : $this->getAllowMaybe()); + $this->setVoteLimit(isset($array['voteLimit']) ? $array['voteLimit'] : $this->getVoteLimit()); + $this->setShowResults(isset($array['showResults']) ? $array['showResults'] : $this->getShowResults()); + $this->setDeleted(isset($array['deleted']) ? $array['deleted'] : $this->getDeleted()); + $this->setAdminAccess(isset($array['adminAccess']) ? $array['adminAccess'] : $this->getAdminAccess()); + return $this; + } + private function getDisplayName() { if (\OC::$server->getUserManager()->get($this->owner) instanceof IUser) { diff --git a/lib/Service/PollService.php b/lib/Service/PollService.php index 31a6f36d..d23c8595 100644 --- a/lib/Service/PollService.php +++ b/lib/Service/PollService.php @@ -33,12 +33,8 @@ use OCP\ILogger; - use OCA\Polls\Db\Poll; use OCA\Polls\Db\PollMapper; - use OCA\Polls\Service\CommentService; - use OCA\Polls\Service\OptionService; - use OCA\Polls\Service\ShareService; - use OCA\Polls\Service\VoteService; + use OCA\Polls\Db\Poll; use OCA\Polls\Service\LogService; use OCA\Polls\Model\Acl; @@ -48,20 +44,14 @@ private $pollMapper; private $poll; private $logService; - private $commentService; - private $optionService; - private $shareService; - private $voteService; private $acl; /** * PollController constructor. + * @param ILogger $logger * @param PollMapper $pollMapper + * @param Poll $poll * @param LogService $logService - * @param CommentService $commentService - * @param OptionService $optionService - * @param ShareService $shareService - * @param VoteService $voteService * @param Acl $acl */ @@ -70,20 +60,12 @@ PollMapper $pollMapper, Poll $poll, LogService $logService, - CommentService $commentService, - OptionService $optionService, - ShareService $shareService, - VoteService $voteService, Acl $acl ) { $this->logger = $logger; $this->pollMapper = $pollMapper; $this->poll = $poll; $this->logService = $logService; - $this->commentService = $commentService; - $this->optionService = $optionService; - $this->shareService = $shareService; - $this->voteService = $voteService; $this->acl = $acl; } @@ -120,47 +102,30 @@ * @param integer $pollId * @return array */ - public function get($pollId = 0, $token = '') { + public function get($pollId) { - if (!$this->acl->setPollIdOrToken($pollId, $token)->getAllowView()) { + if (!$this->acl->setPollId($pollId)->getAllowView()) { throw new NotAuthorizedException; } - $this->poll = $this->pollMapper->find($this->acl->getPollId()); + return $this->pollMapper->find($pollId); - try { - $comments = $this->commentService->list($this->poll->getId(), $token); - } catch (Exception $e) { - $comments = []; - } - - try { - $options = $this->optionService->list($this->poll->getId(), $token); - } catch (Exception $e) { - $options = []; + } - } + /** + * get + * @NoAdminRequired + * @param integer $pollId + * @return array + */ + public function getByToken($token) { - try { - $votes = $this->voteService->list($this->poll->getId(), $token); - } catch (Exception $e) { - $votes = []; + if (!$this->acl->setToken($token)->getAllowView()) { + throw new NotAuthorizedException; } - try { - $shares = $this->shareService->list($this->poll->getId()); - } catch (Exception $e) { - $shares = []; - } + return $this->pollMapper->find($this->acl->getPollId()); - return [ - 'acl' => $this->acl, - 'poll' => $this->poll, - 'comments' => $comments, - 'options' => $options, - 'shares' => $shares, - 'votes' => $votes - ]; } /** @@ -212,7 +177,8 @@ * write * @NoAdminRequired * @NoCSRFRequired - * @param Array $poll + * @param string $type + * @param string $title * @return Poll */ @@ -282,17 +248,7 @@ if (isset($poll['title']) && !$poll['title']) { throw new EmptyTitleException('Title must not be empty'); } - - $this->poll->setTitle($poll['title'] ? $poll['title'] : $this->poll->getTitle()); - $this->poll->setDescription(isset($poll['description']) ? $poll['description'] : $this->poll->getDescription()); - $this->poll->setAccess(isset($poll['access']) ? $poll['access'] : $this->poll->getAccess()); - $this->poll->setExpire(isset($poll['expire']) ? $poll['expire'] : $this->poll->getExpire()); - $this->poll->setAnonymous(isset($poll['anonymous']) ? $poll['anonymous'] : $this->poll->getAnonymous()); - $this->poll->setAllowMaybe(isset($poll['allowMaybe']) ? $poll['allowMaybe'] : $this->poll->getAllowMaybe()); - $this->poll->setVoteLimit(isset($poll['voteLimit']) ? $poll['voteLimit'] : $this->poll->getVoteLimit()); - $this->poll->setShowResults(isset($poll['showResults']) ? $poll['showResults'] : $this->poll->getShowResults()); - $this->poll->setDeleted(isset($poll['deleted']) ? $poll['deleted'] : $this->poll->getDeleted()); - $this->poll->setAdminAccess(isset($poll['adminAccess']) ? $poll['adminAccess'] : $this->poll->getAdminAccess()); + $this->poll->deserializeArray($poll); $this->pollMapper->update($this->poll); $this->logService->setLog($this->poll->getId(), 'updatePoll'); |