From af2fd96825d6ae2c7802e9f3bac9054e85093396 Mon Sep 17 00:00:00 2001 From: Sean Molenaar Date: Tue, 3 Nov 2020 21:56:37 +0100 Subject: Controllers: Use v2 services Signed-off-by: Sean Molenaar --- lib/Controller/AdminController.php | 20 ++------- lib/Controller/ApiController.php | 2 +- lib/Controller/FeedApiController.php | 66 ++++++++++++++++-------------- lib/Controller/FeedController.php | 3 ++ lib/Controller/FolderApiController.php | 26 ++++++------ lib/Controller/FolderController.php | 3 ++ lib/Controller/ItemApiController.php | 75 +++++++++++++++++++--------------- lib/Service/FeedServiceV2.php | 4 +- lib/Service/FolderServiceV2.php | 8 ++++ 9 files changed, 109 insertions(+), 98 deletions(-) (limited to 'lib') diff --git a/lib/Controller/AdminController.php b/lib/Controller/AdminController.php index e3551a2a1..059a0c4a7 100644 --- a/lib/Controller/AdminController.php +++ b/lib/Controller/AdminController.php @@ -20,8 +20,6 @@ use OCP\IConfig; use OCP\IRequest; use OCP\AppFramework\Controller; -use OCA\News\Service\ItemService; - /** * Class AdminController * @@ -35,28 +33,18 @@ class AdminController extends Controller */ private $config; - /** - * @var ItemService - */ - private $itemService; - /** * AdminController constructor. * * @param string $appName The name of the app * @param IRequest $request The request * @param IConfig $config Config for nextcloud - * @param ItemService $itemService Service for items */ - public function __construct( - string $appName, - IRequest $request, - IConfig $config, - ItemService $itemService - ) { + public function __construct(string $appName, IRequest $request, IConfig $config) + { parent::__construct($appName, $request); - $this->config = $config; - $this->itemService = $itemService; + + $this->config = $config; } /** diff --git a/lib/Controller/ApiController.php b/lib/Controller/ApiController.php index 544b2c23b..de7a0919c 100644 --- a/lib/Controller/ApiController.php +++ b/lib/Controller/ApiController.php @@ -41,7 +41,7 @@ class ApiController extends BaseApiController * @param IRequest $request The request * @param IUserSession $userSession The user session */ - public function __construct($appName, IRequest $request, IUserSession $userSession) + public function __construct(string $appName, IRequest $request, IUserSession $userSession) { parent::__construct($appName, $request); $this->userSession = $userSession; diff --git a/lib/Controller/FeedApiController.php b/lib/Controller/FeedApiController.php index 400c1a4b2..ae2f8cdaf 100644 --- a/lib/Controller/FeedApiController.php +++ b/lib/Controller/FeedApiController.php @@ -15,12 +15,12 @@ namespace OCA\News\Controller; +use Exception; use OCA\News\Service\Exceptions\ServiceConflictException; use OCA\News\Service\Exceptions\ServiceNotFoundException; -use OCA\News\Utility\PsrLogger; +use OCA\News\Service\FeedServiceV2; use OCP\AppFramework\Http\JSONResponse; use \OCP\IRequest; -use \OCP\ILogger; use \OCP\IUserSession; use \OCP\AppFramework\Http; @@ -31,18 +31,25 @@ use function GuzzleHttp\Psr7\uri_for; class FeedApiController extends ApiController { - use JSONHttpErrorTrait; + use JSONHttpErrorTrait, ApiPayloadTrait; /** + * TODO: Remove * @var ItemService */ - private $itemService; + private $oldItemService; /** - * @var FeedService + * @var FeedServiceV2 */ private $feedService; + /** + * TODO: Remove + * @var FeedService + */ + private $oldFeedService; + /** * @var LoggerInterface */ @@ -57,15 +64,16 @@ class FeedApiController extends ApiController string $appName, IRequest $request, IUserSession $userSession, - FeedService $feedService, - ItemService $itemService, + FeedService $oldFeedService, + FeedServiceV2 $feedService, + ItemService $oldItemService, LoggerInterface $logger ) { parent::__construct($appName, $request, $userSession); $this->feedService = $feedService; - $this->itemService = $itemService; + $this->oldFeedService = $oldFeedService; + $this->oldItemService = $oldItemService; $this->logger = $logger; - $this->serializer = new EntityApiSerializer('feeds'); } @@ -78,20 +86,17 @@ class FeedApiController extends ApiController { $result = [ - 'starredCount' => $this->itemService->starredCount($this->getUserId()), - 'feeds' => $this->feedService->findAllForUser($this->getUserId()) + 'starredCount' => $this->oldItemService->starredCount($this->getUserId()), + 'feeds' => $this->serialize($this->feedService->findAllForUser($this->getUserId())) ]; - try { - $result['newestItemId'] = - $this->itemService->getNewestItemId($this->getUserId()); - - // in case there are no items, ignore + $result['newestItemId'] = $this->oldItemService->getNewestItemId($this->getUserId()); } catch (ServiceNotFoundException $ex) { + // in case there are no items, ignore } - return $this->serializer->serialize($result); + return $result; } @@ -112,20 +117,18 @@ class FeedApiController extends ApiController } try { - $this->feedService->purgeDeleted($this->getUserId(), false); + $this->feedService->purgeDeleted(); - $feed = $this->feedService->create($url, $folderId, $this->getUserId()); - $result = ['feeds' => [$feed]]; + $feed = $this->feedService->create($this->getUserId(), $url, $folderId); + $result = ['feeds' => $this->serialize($feed)]; try { - $result['newestItemId'] = - $this->itemService->getNewestItemId($this->getUserId()); - - // in case there are no items, ignore + $result['newestItemId'] = $this->oldItemService->getNewestItemId($this->getUserId()); } catch (ServiceNotFoundException $ex) { + // in case there are no items, ignore } - return $this->serializer->serialize($result); + return $result; } catch (ServiceConflictException $ex) { return $this->error($ex, Http::STATUS_CONFLICT); } catch (ServiceNotFoundException $ex) { @@ -165,7 +168,7 @@ class FeedApiController extends ApiController */ public function read(int $feedId, int $newestItemId): void { - $this->itemService->readFeed($feedId, $newestItemId, $this->getUserId()); + $this->oldItemService->readFeed($feedId, $newestItemId, $this->getUserId()); } @@ -186,7 +189,7 @@ class FeedApiController extends ApiController } try { - $this->feedService->patch( + $this->oldFeedService->patch( $feedId, $this->getUserId(), ['folderId' => $folderId] @@ -212,7 +215,7 @@ class FeedApiController extends ApiController public function rename(int $feedId, string $feedTitle) { try { - $this->feedService->patch( + $this->oldFeedService->patch( $feedId, $this->getUserId(), ['title' => $feedTitle] @@ -231,7 +234,7 @@ class FeedApiController extends ApiController */ public function fromAllUsers(): array { - $feeds = $this->feedService->findAllFromAllUsers(); + $feeds = $this->feedService->findAll(); $result = ['feeds' => []]; foreach ($feeds as $feed) { @@ -254,9 +257,10 @@ class FeedApiController extends ApiController public function update(string $userId, int $feedId): void { try { - $this->feedService->update($userId, $feedId); + $feed = $this->feedService->find($userId, $feedId); + $this->feedService->fetch($feed); // ignore update failure - } catch (\Exception $ex) { + } catch (Exception $ex) { $this->logger->debug('Could not update feed ' . $ex->getMessage()); } } diff --git a/lib/Controller/FeedController.php b/lib/Controller/FeedController.php index 78df7be0c..5e2ba8a96 100644 --- a/lib/Controller/FeedController.php +++ b/lib/Controller/FeedController.php @@ -30,8 +30,11 @@ class FeedController extends Controller { use JSONHttpErrorTrait; + //TODO: Remove private $feedService; + //TODO: Remove private $folderService; + //TODO: Remove private $itemService; private $userId; private $settings; diff --git a/lib/Controller/FolderApiController.php b/lib/Controller/FolderApiController.php index 691c67139..c9a6b67b7 100644 --- a/lib/Controller/FolderApiController.php +++ b/lib/Controller/FolderApiController.php @@ -20,31 +20,31 @@ use \OCP\IRequest; use \OCP\IUserSession; use \OCP\AppFramework\Http; -use \OCA\News\Service\FolderService; use \OCA\News\Service\ItemService; +use \OCA\News\Service\FolderServiceV2; use \OCA\News\Service\Exceptions\ServiceNotFoundException; use \OCA\News\Service\Exceptions\ServiceConflictException; use \OCA\News\Service\Exceptions\ServiceValidationException; class FolderApiController extends ApiController { - use JSONHttpErrorTrait; + use JSONHttpErrorTrait, ApiPayloadTrait; private $folderService; + //TODO: Remove private $itemService; - private $serializer; public function __construct( string $appName, IRequest $request, IUserSession $userSession, - FolderService $folderService, + FolderServiceV2 $folderService, ItemService $itemService ) { parent::__construct($appName, $request, $userSession); + $this->folderService = $folderService; $this->itemService = $itemService; - $this->serializer = new EntityApiSerializer('folders'); } @@ -55,9 +55,8 @@ class FolderApiController extends ApiController */ public function index() { - return $this->serializer->serialize( - $this->folderService->findAllForUser($this->getUserId()) - ); + $folders = $this->folderService->findAllForUser($this->getUserId()); + return ['folders' => $this->serialize($folders)]; } @@ -73,10 +72,9 @@ class FolderApiController extends ApiController public function create(string $name) { try { - $this->folderService->purgeDeleted($this->getUserId(), false); - return $this->serializer->serialize( - $this->folderService->create($name, $this->getUserId()) - ); + $this->folderService->purgeDeleted(); + $folder = $this->folderService->create($this->getUserId(), $name); + return ['folders' => $this->serialize($folder)]; } catch (ServiceValidationException $ex) { return $this->error($ex, Http::STATUS_UNPROCESSABLE_ENTITY); } catch (ServiceConflictException $ex) { @@ -101,7 +99,7 @@ class FolderApiController extends ApiController } try { - $this->folderService->delete($folderId, $this->getUserId()); + $this->folderService->delete($this->getUserId(), $folderId); } catch (ServiceNotFoundException $ex) { return $this->error($ex, Http::STATUS_NOT_FOUND); } @@ -127,7 +125,7 @@ class FolderApiController extends ApiController } try { - $this->folderService->rename($folderId, $name, $this->getUserId()); + $this->folderService->rename($this->getUserId(), $folderId, $name); } catch (ServiceValidationException $ex) { return $this->error($ex, Http::STATUS_UNPROCESSABLE_ENTITY); } catch (ServiceConflictException $ex) { diff --git a/lib/Controller/FolderController.php b/lib/Controller/FolderController.php index 09900f5b2..e67299c6d 100644 --- a/lib/Controller/FolderController.php +++ b/lib/Controller/FolderController.php @@ -30,8 +30,11 @@ class FolderController extends Controller { use JSONHttpErrorTrait; + //TODO: Remove private $folderService; + //TODO: Remove private $feedService; + //TODO: Remove private $itemService; private $userId; diff --git a/lib/Controller/ItemApiController.php b/lib/Controller/ItemApiController.php index 0ac0a890a..3e31d2fdd 100644 --- a/lib/Controller/ItemApiController.php +++ b/lib/Controller/ItemApiController.php @@ -15,30 +15,33 @@ namespace OCA\News\Controller; +use OCA\News\Service\ItemService; +use OCA\News\Service\ItemServiceV2; use OCP\AppFramework\Http\JSONResponse; use \OCP\IRequest; use \OCP\IUserSession; use \OCP\AppFramework\Http; -use \OCA\News\Service\ItemService; use \OCA\News\Service\Exceptions\ServiceNotFoundException; class ItemApiController extends ApiController { - use JSONHttpErrorTrait; + use JSONHttpErrorTrait, ApiPayloadTrait; + private $oldItemService; private $itemService; - private $serializer; public function __construct( string $appName, IRequest $request, IUserSession $userSession, - ItemService $itemService + ItemService $oldItemService, + ItemServiceV2 $itemService ) { parent::__construct($appName, $request, $userSession); + + $this->oldItemService = $oldItemService; $this->itemService = $itemService; - $this->serializer = new EntityApiSerializer('items'); } @@ -63,17 +66,17 @@ class ItemApiController extends ApiController int $offset = 0, bool $oldestFirst = false ) { - return $this->serializer->serialize( - $this->itemService->findAllItems( - $id, - $type, - $batchSize, - $offset, - $getRead, - $oldestFirst, - $this->getUserId() - ) + $items = $this->oldItemService->findAllItems( + $id, + $type, + $batchSize, + $offset, + $getRead, + $oldestFirst, + $this->getUserId() ); + + return ['items' => $this->serialize($items)]; } @@ -87,7 +90,7 @@ class ItemApiController extends ApiController * @param int $lastModified * @return array|mixed */ - public function updated($type = 3, $id = 0, $lastModified = 0) + public function updated(int $type = 3, int $id = 0, int $lastModified = 0) { // needs to be turned into a millisecond timestamp to work properly if (strlen((string) $lastModified) <= 10) { @@ -95,22 +98,22 @@ class ItemApiController extends ApiController } else { $paddedLastModified = $lastModified; } - return $this->serializer->serialize( - $this->itemService->findAllNew( - $id, - $type, - $paddedLastModified, - true, - $this->getUserId() - ) + $items = $this->oldItemService->findAllNew( + $id, + $type, + $paddedLastModified, + true, + $this->getUserId() ); + + return ['items' => $this->serialize($items)]; } - private function setRead($isRead, $itemId) + private function setRead(bool $isRead, int $itemId) { try { - $this->itemService->read($itemId, $isRead, $this->getUserId()); + $this->oldItemService->read($itemId, $isRead, $this->getUserId()); } catch (ServiceNotFoundException $ex) { return $this->error($ex, Http::STATUS_NOT_FOUND); } @@ -149,10 +152,10 @@ class ItemApiController extends ApiController } - private function setStarred($isStarred, $feedId, $guidHash) + private function setStarred(bool $isStarred, int $feedId, string $guidHash) { try { - $this->itemService->star( + $this->oldItemService->star( $feedId, $guidHash, $isStarred, @@ -207,15 +210,15 @@ class ItemApiController extends ApiController */ public function readAll(int $newestItemId) { - $this->itemService->readAll($newestItemId, $this->getUserId()); + $this->oldItemService->readAll($newestItemId, $this->getUserId()); } - private function setMultipleRead($isRead, $items) + private function setMultipleRead(bool $isRead, array $items) { foreach ($items as $id) { try { - $this->itemService->read($id, $isRead, $this->getUserId()); + $this->oldItemService->read($id, $isRead, $this->getUserId()); } catch (ServiceNotFoundException $ex) { continue; } @@ -249,11 +252,15 @@ class ItemApiController extends ApiController } - private function setMultipleStarred($isStarred, $items) + /** + * @param bool $isStarred + * @param array $items + */ + private function setMultipleStarred(bool $isStarred, array $items) { foreach ($items as $item) { try { - $this->itemService->star( + $this->oldItemService->star( $item['feedId'], $item['guidHash'], $isStarred, @@ -284,7 +291,7 @@ class ItemApiController extends ApiController * @NoCSRFRequired * @CORS * - * @param int[] $items item ids + * @param array $items item ids */ public function unstarMultiple(array $items) { diff --git a/lib/Service/FeedServiceV2.php b/lib/Service/FeedServiceV2.php index 4be96ebf8..0d1b45600 100644 --- a/lib/Service/FeedServiceV2.php +++ b/lib/Service/FeedServiceV2.php @@ -246,11 +246,11 @@ class FeedServiceV2 extends Service /** * Update a feed * - * @param Feed $feed Feed item + * @param Feed|Entity $feed Feed item * * @return Feed|Entity Database feed entity */ - public function fetch(Feed $feed): Entity + public function fetch(Entity $feed): Entity { if ($feed->getPreventUpdate() === true) { return $feed; diff --git a/lib/Service/FolderServiceV2.php b/lib/Service/FolderServiceV2.php index 784d82f8c..ee24addfd 100644 --- a/lib/Service/FolderServiceV2.php +++ b/lib/Service/FolderServiceV2.php @@ -101,4 +101,12 @@ class FolderServiceV2 extends Service { $this->mapper->purgeDeleted(); } + + public function rename(string $userId, int $folderId, string $newName) + { + /** @var Folder $folder */ + $folder = $this->mapper->find($userId, $folderId); + $folder->setName($newName); + $this->mapper->update($folder); + } } -- cgit v1.2.3