diff options
author | Sean Molenaar <sean@seanmolenaar.eu> | 2020-09-29 13:54:17 +0200 |
---|---|---|
committer | Benjamin Brahmer <info@b-brahmer.de> | 2020-09-29 14:56:07 +0200 |
commit | 35b53ecd404a74edea3c6866e451c4819bdc9ea8 (patch) | |
tree | dac46834d8fa7ec0122243f94604c3d2215b4d22 /lib/Controller | |
parent | d6d169be15913404f99b86c39a03bc71942c9f77 (diff) |
OPML export command and fixes
Signed-off-by: Sean Molenaar <sean@seanmolenaar.eu>
Diffstat (limited to 'lib/Controller')
-rw-r--r-- | lib/Controller/AdminController.php | 11 | ||||
-rw-r--r-- | lib/Controller/ApiController.php | 1 | ||||
-rw-r--r-- | lib/Controller/EntityApiSerializer.php | 2 | ||||
-rw-r--r-- | lib/Controller/ExportController.php | 48 | ||||
-rw-r--r-- | lib/Controller/FeedApiController.php | 31 | ||||
-rw-r--r-- | lib/Controller/FeedController.php | 57 | ||||
-rw-r--r-- | lib/Controller/FolderApiController.php | 23 | ||||
-rw-r--r-- | lib/Controller/FolderController.php | 37 | ||||
-rw-r--r-- | lib/Controller/ItemApiController.php | 47 | ||||
-rw-r--r-- | lib/Controller/ItemController.php | 22 | ||||
-rw-r--r-- | lib/Controller/JSONHttpErrorTrait.php | 2 | ||||
-rw-r--r-- | lib/Controller/PageController.php | 6 | ||||
-rw-r--r-- | lib/Controller/UserApiController.php | 5 | ||||
-rw-r--r-- | lib/Controller/UtilityApiController.php | 2 |
14 files changed, 163 insertions, 131 deletions
diff --git a/lib/Controller/AdminController.php b/lib/Controller/AdminController.php index addc53591..e3551a2a1 100644 --- a/lib/Controller/AdminController.php +++ b/lib/Controller/AdminController.php @@ -67,12 +67,17 @@ class AdminController extends Controller * * @return TemplateResponse */ - public function index() + public function index(): TemplateResponse { return new TemplateResponse($this->appName, 'admin', $this->getData(), 'blank'); } - private function getData() + /** + * Get admin data. + * + * @return array + */ + private function getData(): array { $data = []; @@ -108,7 +113,7 @@ class AdminController extends Controller bool $useCronUpdates, string $exploreUrl, int $updateInterval - ) { + ): array { $this->config->setAppValue($this->appName, 'autoPurgeMinimumInterval', $autoPurgeMinimumInterval); $this->config->setAppValue($this->appName, 'autoPurgeCount', $autoPurgeCount); $this->config->setAppValue($this->appName, 'maxRedirects', $maxRedirects); diff --git a/lib/Controller/ApiController.php b/lib/Controller/ApiController.php index 68caf9236..544b2c23b 100644 --- a/lib/Controller/ApiController.php +++ b/lib/Controller/ApiController.php @@ -16,6 +16,7 @@ namespace OCA\News\Controller; use \OCP\IRequest; +use OCP\IUser; use \OCP\IUserSession; use \OCP\AppFramework\ApiController as BaseApiController; diff --git a/lib/Controller/EntityApiSerializer.php b/lib/Controller/EntityApiSerializer.php index c7fdb84e5..daa0f20e5 100644 --- a/lib/Controller/EntityApiSerializer.php +++ b/lib/Controller/EntityApiSerializer.php @@ -57,7 +57,7 @@ class EntityApiSerializer } - private function convert($entities) + private function convert(array $entities) { $converted = []; diff --git a/lib/Controller/ExportController.php b/lib/Controller/ExportController.php index 16bdfbd4e..78f200934 100644 --- a/lib/Controller/ExportController.php +++ b/lib/Controller/ExportController.php @@ -13,39 +13,37 @@ namespace OCA\News\Controller; +use OCA\News\Service\FeedServiceV2; +use OCA\News\Service\FolderServiceV2; +use OCA\News\Service\ItemServiceV2; +use OCA\News\Service\OpmlService; +use OCP\AppFramework\Http\DataDownloadResponse; use \OCP\IRequest; use \OCP\AppFramework\Controller; -use \OCP\AppFramework\Http; use \OCP\AppFramework\Http\JSONResponse; -use \OCA\News\Http\TextDownloadResponse; -use \OCA\News\Service\FolderService; -use \OCA\News\Service\FeedService; -use \OCA\News\Service\ItemService; -use \OCA\News\Utility\OPMLExporter; - class ExportController extends Controller { - private $opmlExporter; + private $opmlService; private $folderService; private $feedService; private $itemService; private $userId; public function __construct( - $appName, + string $appName, IRequest $request, - FolderService $folderService, - FeedService $feedService, - ItemService $itemService, - OPMLExporter $opmlExporter, - $UserId + FolderServiceV2 $folderService, + FeedServiceV2 $feedService, + ItemServiceV2 $itemService, + OpmlService $opmlService, + string $UserId ) { parent::__construct($appName, $request); $this->feedService = $feedService; $this->folderService = $folderService; - $this->opmlExporter = $opmlExporter; + $this->opmlService = $opmlService; $this->itemService = $itemService; $this->userId = $UserId; } @@ -55,15 +53,15 @@ class ExportController extends Controller * @NoAdminRequired * @NoCSRFRequired */ - public function opml() + public function opml(): DataDownloadResponse { - $feeds = $this->feedService->findAll($this->userId); - $folders = $this->folderService->findAll($this->userId); - $opml = $this->opmlExporter->build($folders, $feeds)->saveXML(); $date = date('Y-m-d'); - $name = "subscriptions-" . $date . ".opml"; - $mimeType = 'text/xml'; - return new TextDownloadResponse($opml, $name, $mimeType); + + return new DataDownloadResponse( + $this->opmlService->export($this->userId), + "subscriptions-${date}.opml", + 'text/xml' + ); } @@ -71,10 +69,10 @@ class ExportController extends Controller * @NoAdminRequired * @NoCSRFRequired */ - public function articles() + public function articles(): JSONResponse { - $feeds = $this->feedService->findAll($this->userId); - $items = $this->itemService->getUnreadOrStarred($this->userId); + $feeds = $this->feedService->findAllForUser($this->userId); + $items = $this->itemService->findAllForUser($this->userId, ['unread' => true, 'starred' => true]); // build assoc array for fast access $feedsDict = []; diff --git a/lib/Controller/FeedApiController.php b/lib/Controller/FeedApiController.php index c0b4f1a56..cb3d5e645 100644 --- a/lib/Controller/FeedApiController.php +++ b/lib/Controller/FeedApiController.php @@ -18,6 +18,7 @@ namespace OCA\News\Controller; use OCA\News\Service\Exceptions\ServiceConflictException; use OCA\News\Service\Exceptions\ServiceNotFoundException; use OCA\News\Utility\PsrLogger; +use OCP\AppFramework\Http\JSONResponse; use \OCP\IRequest; use \OCP\ILogger; use \OCP\IUserSession; @@ -52,7 +53,7 @@ class FeedApiController extends ApiController private $serializer; public function __construct( - $appName, + string $appName, IRequest $request, IUserSession $userSession, FeedService $feedService, @@ -72,7 +73,7 @@ class FeedApiController extends ApiController * @NoCSRFRequired * @CORS */ - public function index() + public function index(): array { $result = [ @@ -100,9 +101,10 @@ class FeedApiController extends ApiController * * @param string $url * @param int $folderId - * @return array|mixed|\OCP\AppFramework\Http\JSONResponse + * + * @return array|mixed|JSONResponse */ - public function create($url, $folderId = 0) + public function create(string $url, int $folderId = 0) { try { $this->feedService->purgeDeleted($this->getUserId(), false); @@ -133,9 +135,10 @@ class FeedApiController extends ApiController * @CORS * * @param int $feedId - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function delete($feedId) + public function delete(int $feedId) { try { $this->feedService->delete($feedId, $this->getUserId()); @@ -155,7 +158,7 @@ class FeedApiController extends ApiController * @param int $feedId * @param int $newestItemId */ - public function read($feedId, $newestItemId) + public function read(int $feedId, int $newestItemId): void { $this->itemService->readFeed($feedId, $newestItemId, $this->getUserId()); } @@ -168,9 +171,10 @@ class FeedApiController extends ApiController * * @param int $feedId * @param int $folderId - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function move($feedId, $folderId) + public function move(int $feedId, int $folderId) { try { $this->feedService->patch( @@ -193,9 +197,10 @@ class FeedApiController extends ApiController * * @param int $feedId * @param string $feedTitle - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function rename($feedId, $feedTitle) + public function rename(int $feedId, string $feedTitle) { try { $this->feedService->patch( @@ -215,7 +220,7 @@ class FeedApiController extends ApiController * @NoCSRFRequired * @CORS */ - public function fromAllUsers() + public function fromAllUsers(): array { $feeds = $this->feedService->findAllFromAllUsers(); $result = ['feeds' => []]; @@ -237,7 +242,7 @@ class FeedApiController extends ApiController * @param string $userId * @param int $feedId */ - public function update($userId, $feedId) + public function update(string $userId, int $feedId): void { try { $this->feedService->update($userId, $feedId); diff --git a/lib/Controller/FeedController.php b/lib/Controller/FeedController.php index d0c25d55b..c09096bd9 100644 --- a/lib/Controller/FeedController.php +++ b/lib/Controller/FeedController.php @@ -15,6 +15,7 @@ namespace OCA\News\Controller; use OCA\News\Service\Exceptions\ServiceConflictException; use OCA\News\Service\Exceptions\ServiceNotFoundException; +use OCP\AppFramework\Http\JSONResponse; use OCP\IRequest; use OCP\IConfig; use OCP\AppFramework\Controller; @@ -36,13 +37,13 @@ class FeedController extends Controller private $settings; public function __construct( - $appName, + string $appName, IRequest $request, FolderService $folderService, FeedService $feedService, ItemService $itemService, IConfig $settings, - $UserId + string $UserId ) { parent::__construct($appName, $request); $this->feedService = $feedService; @@ -56,7 +57,7 @@ class FeedController extends Controller /** * @NoAdminRequired */ - public function index() + public function index(): array { // this method is also used to update the interface @@ -83,7 +84,7 @@ class FeedController extends Controller /** * @NoAdminRequired */ - public function active() + public function active(): array { $feedId = (int) $this->settings->getUserValue( $this->userId, @@ -134,14 +135,15 @@ class FeedController extends Controller * @param string $title * @param string $user * @param string $password - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ public function create( - $url, - $parentFolderId, - $title = null, - $user = null, - $password = null + string $url, + int $parentFolderId, + ?string $title = null, + ?string $user = null, + ?string $password = null ) { try { // we need to purge deleted feeds if a feed is created to @@ -180,9 +182,10 @@ class FeedController extends Controller * @NoAdminRequired * * @param int $feedId - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function delete($feedId) + public function delete(int $feedId) { try { $this->feedService->markDeleted($feedId, $this->userId); @@ -198,9 +201,10 @@ class FeedController extends Controller * @NoAdminRequired * * @param int $feedId - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function update($feedId) + public function update(int $feedId) { try { $feed = $this->feedService->update($this->userId, $feedId); @@ -227,7 +231,7 @@ class FeedController extends Controller * @param array $json * @return array */ - public function import($json) + public function import(array $json): array { $feed = $this->feedService->importArticles($json, $this->userId); @@ -250,7 +254,7 @@ class FeedController extends Controller * @param int $highestItemId * @return array */ - public function read($feedId, $highestItemId) + public function read(int $feedId, int $highestItemId): array { $this->itemService->readFeed($feedId, $highestItemId, $this->userId); @@ -269,9 +273,10 @@ class FeedController extends Controller * @NoAdminRequired * * @param int $feedId - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function restore($feedId) + public function restore(int $feedId) { try { $this->feedService->unmarkDeleted($feedId, $this->userId); @@ -292,15 +297,17 @@ class FeedController extends Controller * @param int $ordering * @param int $folderId * @param string $title + * + * @return array|JSONResponse */ public function patch( - $feedId, - $pinned = null, - $fullTextEnabled = null, - $updateMode = null, - $ordering = null, - $title = null, - $folderId = null + int $feedId, + ?bool $pinned = null, + ?bool $fullTextEnabled = null, + ?int $updateMode = null, + ?int $ordering = null, + ?int $folderId = null, + ?string $title = null ) { $attributes = [ 'pinned' => $pinned, diff --git a/lib/Controller/FolderApiController.php b/lib/Controller/FolderApiController.php index ff61f3300..1f79d7cf9 100644 --- a/lib/Controller/FolderApiController.php +++ b/lib/Controller/FolderApiController.php @@ -15,6 +15,7 @@ namespace OCA\News\Controller; +use OCP\AppFramework\Http\JSONResponse; use \OCP\IRequest; use \OCP\IUserSession; use \OCP\AppFramework\Http; @@ -34,7 +35,7 @@ class FolderApiController extends ApiController private $serializer; public function __construct( - $appName, + string $appName, IRequest $request, IUserSession $userSession, FolderService $folderService, @@ -55,7 +56,7 @@ class FolderApiController extends ApiController public function index() { return $this->serializer->serialize( - $this->folderService->findAll($this->getUserId()) + $this->folderService->findAllForUser($this->getUserId()) ); } @@ -66,9 +67,10 @@ class FolderApiController extends ApiController * @CORS * * @param string $name - * @return array|mixed|\OCP\AppFramework\Http\JSONResponse + * + * @return array|mixed|JSONResponse */ - public function create($name) + public function create(string $name) { try { $this->folderService->purgeDeleted($this->getUserId(), false); @@ -89,9 +91,10 @@ class FolderApiController extends ApiController * @CORS * * @param int $folderId - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function delete($folderId) + public function delete(int $folderId) { try { $this->folderService->delete($folderId, $this->getUserId()); @@ -107,11 +110,13 @@ class FolderApiController extends ApiController * @NoAdminRequired * @NoCSRFRequired * @CORS + * * @param int $folderId * @param string $name - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function update($folderId, $name) + public function update(int $folderId, string $name) { try { $this->folderService->rename($folderId, $name, $this->getUserId()); @@ -135,7 +140,7 @@ class FolderApiController extends ApiController * @param int $folderId * @param int $newestItemId */ - public function read($folderId, $newestItemId) + public function read(int $folderId, int $newestItemId): void { $this->itemService->readFolder($folderId, $newestItemId, $this->getUserId()); } diff --git a/lib/Controller/FolderController.php b/lib/Controller/FolderController.php index 38c580ff0..d19726963 100644 --- a/lib/Controller/FolderController.php +++ b/lib/Controller/FolderController.php @@ -13,6 +13,8 @@ namespace OCA\News\Controller; +use OCA\News\Service\Exceptions\ServiceException; +use OCP\AppFramework\Http\JSONResponse; use \OCP\IRequest; use \OCP\AppFramework\Controller; use \OCP\AppFramework\Http; @@ -34,7 +36,7 @@ class FolderController extends Controller private $userId; public function __construct( - $appName, + string $appName, IRequest $request, FolderService $folderService, FeedService $feedService, @@ -54,7 +56,7 @@ class FolderController extends Controller */ public function index() { - $folders = $this->folderService->findAll($this->userId); + $folders = $this->folderService->findAllForUser($this->userId); return ['folders' => $folders]; } @@ -64,13 +66,14 @@ class FolderController extends Controller * * @param int $folderId * @param bool $open - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function open($folderId, $open) + public function open(int $folderId, bool $open) { try { $this->folderService->open($folderId, $open, $this->userId); - } catch (ServiceNotFoundException $ex) { + } catch (ServiceException $ex) { return $this->error($ex, Http::STATUS_NOT_FOUND); } @@ -82,9 +85,10 @@ class FolderController extends Controller * @NoAdminRequired * * @param string $folderName - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function create($folderName) + public function create(string $folderName) { try { // we need to purge deleted folders if a folder is created to @@ -105,9 +109,10 @@ class FolderController extends Controller * @NoAdminRequired * * @param int $folderId - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function delete($folderId) + public function delete(int $folderId) { try { $this->folderService->markDeleted($folderId, $this->userId); @@ -124,9 +129,10 @@ class FolderController extends Controller * * @param string $folderName * @param int $folderId - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function rename($folderName, $folderId) + public function rename(string $folderName, int $folderId) { try { $folder = $this->folderService->rename( @@ -152,7 +158,7 @@ class FolderController extends Controller * @param int $highestItemId * @return array */ - public function read($folderId, $highestItemId) + public function read(int $folderId, int $highestItemId): array { $this->itemService->readFolder( $folderId, @@ -160,7 +166,7 @@ class FolderController extends Controller $this->userId ); - return ['feeds' => $this->feedService->findAll($this->userId)]; + return ['feeds' => $this->feedService->findAllForUser($this->userId)]; } @@ -168,9 +174,10 @@ class FolderController extends Controller * @NoAdminRequired * * @param int $folderId - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function restore($folderId) + public function restore(int $folderId) { try { $this->folderService->unmarkDeleted($folderId, $this->userId); diff --git a/lib/Controller/ItemApiController.php b/lib/Controller/ItemApiController.php index dac2b0a5f..0ac0a890a 100644 --- a/lib/Controller/ItemApiController.php +++ b/lib/Controller/ItemApiController.php @@ -15,6 +15,7 @@ namespace OCA\News\Controller; +use OCP\AppFramework\Http\JSONResponse; use \OCP\IRequest; use \OCP\IUserSession; use \OCP\AppFramework\Http; @@ -30,7 +31,7 @@ class ItemApiController extends ApiController private $serializer; public function __construct( - $appName, + string $appName, IRequest $request, IUserSession $userSession, ItemService $itemService @@ -55,15 +56,15 @@ class ItemApiController extends ApiController * @return array|mixed */ public function index( - $type = 3, - $id = 0, - $getRead = true, - $batchSize = -1, - $offset = 0, - $oldestFirst = false + int $type = 3, + int $id = 0, + bool $getRead = true, + int $batchSize = -1, + int $offset = 0, + bool $oldestFirst = false ) { return $this->serializer->serialize( - $this->itemService->findAll( + $this->itemService->findAllItems( $id, $type, $batchSize, @@ -124,9 +125,10 @@ class ItemApiController extends ApiController * @CORS * * @param int $itemId - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function read($itemId) + public function read(int $itemId) { return $this->setRead(true, $itemId); } @@ -138,9 +140,10 @@ class ItemApiController extends ApiController * @CORS * * @param int $itemId - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function unread($itemId) + public function unread(int $itemId) { return $this->setRead(false, $itemId); } @@ -170,9 +173,10 @@ class ItemApiController extends ApiController * * @param int $feedId * @param string $guidHash - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function star($feedId, $guidHash) + public function star(int $feedId, string $guidHash) { return $this->setStarred(true, $feedId, $guidHash); } @@ -185,9 +189,10 @@ class ItemApiController extends ApiController * * @param int $feedId * @param string $guidHash - * @return array|\OCP\AppFramework\Http\JSONResponse + * + * @return array|JSONResponse */ - public function unstar($feedId, $guidHash) + public function unstar(int $feedId, string $guidHash) { return $this->setStarred(false, $feedId, $guidHash); } @@ -200,7 +205,7 @@ class ItemApiController extends ApiController * * @param int $newestItemId */ - public function readAll($newestItemId) + public function readAll(int $newestItemId) { $this->itemService->readAll($newestItemId, $this->getUserId()); } @@ -225,7 +230,7 @@ class ItemApiController extends ApiController * * @param int[] $items item ids */ - public function readMultiple($items) + public function readMultiple(array $items) { $this->setMultipleRead(true, $items); } @@ -238,7 +243,7 @@ class ItemApiController extends ApiController * * @param int[] $items item ids */ - public function unreadMultiple($items) + public function unreadMultiple(array $items) { $this->setMultipleRead(false, $items); } @@ -268,7 +273,7 @@ class ItemApiController extends ApiController * * @param int[] $items item ids */ - public function starMultiple($items) + public function starMultiple(array $items) { $this->setMultipleStarred(true, $items); } @@ -281,7 +286,7 @@ class ItemApiController extends ApiController * * @param int[] $items item ids */ - public function unstarMultiple($items) + public function unstarMultiple(array $items) { $this->setMultipleStarred(false, $items); } diff --git a/lib/Controller/ItemController.php b/lib/Controller/ItemController.php index 95a13ee21..37d34e8ca 100644 --- a/lib/Controller/ItemController.php +++ b/lib/Controller/ItemController.php @@ -61,13 +61,13 @@ class ItemController extends Controller * @return array */ public function index( - $type = 3, - $id = 0, - $limit = 50, - $offset = 0, - $showAll = null, - $oldestFirst = null, - $search = '' + int $type = 3, + int $id = 0, + int $limit = 50, + int $offset = 0, + ?bool $showAll = null, + ?bool $oldestFirst = null, + string $search = '' ) { // in case this is called directly and not from the website use the @@ -119,12 +119,12 @@ class ItemController extends Controller if ($offset === 0) { $params['newestItemId'] = $this->itemService->getNewestItemId($this->userId); - $params['feeds'] = $this->feedService->findAll($this->userId); + $params['feeds'] = $this->feedService->findAllForUser($this->userId); $params['starred'] = $thi |