diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2016-03-28 19:50:50 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2016-03-28 19:50:50 +0200 |
commit | 59ca64902e9be76882db16c07e65dc342a336201 (patch) | |
tree | 7bf69bd667761a6afacd9f17bdc37d6e6818b5b2 | |
parent | 150e2ee20a51e753bee752758a51da98883feecf (diff) |
add console based update api which does not require authentication
-rw-r--r-- | appinfo/register_command.php | 24 | ||||
-rw-r--r-- | command/updater/afterupdate.php | 40 | ||||
-rw-r--r-- | command/updater/allfeeds.php | 53 | ||||
-rw-r--r-- | command/updater/beforeupdate.php | 41 | ||||
-rw-r--r-- | command/updater/updatefeed.php | 59 |
5 files changed, 217 insertions, 0 deletions
diff --git a/appinfo/register_command.php b/appinfo/register_command.php new file mode 100644 index 000000000..ef5dbdef1 --- /dev/null +++ b/appinfo/register_command.php @@ -0,0 +1,24 @@ +<?php +/** + * ownCloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Bernhard Posselt <dev@bernhard-posselt.com> + * @copyright Bernhard Posselt 2016 + */ + +namespace OCA\News\AppInfo; + +use OCA\News\Command\Updater\UpdateFeed; +use OCA\News\Command\Updater\AllFeeds; +use OCA\News\Command\Updater\BeforeUpdate; +use OCA\News\Command\Updater\AfterUpdate; + +$app = new Application(); +$container = $app->getContainer(); +$application->add($container->query(AllFeeds::class)); +$application->add($container->query(UpdateFeed::class)); +$application->add($container->query(BeforeUpdate::class)); +$application->add($container->query(AfterUpdate::class)); diff --git a/command/updater/afterupdate.php b/command/updater/afterupdate.php new file mode 100644 index 000000000..36e23b477 --- /dev/null +++ b/command/updater/afterupdate.php @@ -0,0 +1,40 @@ +<?php +/** + * ownCloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Bernhard Posselt <dev@bernhard-posselt.com> + * @copyright Bernhard Posselt 2016 + */ + +namespace OCA\News\Command\Updater; + +use Exception; + +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +use \OCA\News\Utility\Updater; + +class AfterUpdate extends Command { + private $updater; + + public function __construct(Updater $updater) { + parent::__construct(); + $this->updater = $updater; + } + + protected function configure() { + $this->setName('news:updater:after-update') + ->setDescription('This is used to clean up the database. It ' . + 'removes old read articles which are not starred'); + } + + protected function execute(InputInterface $input, OutputInterface $output) { + $this->updater->afterUpdate(); + } + +} diff --git a/command/updater/allfeeds.php b/command/updater/allfeeds.php new file mode 100644 index 000000000..05330ac01 --- /dev/null +++ b/command/updater/allfeeds.php @@ -0,0 +1,53 @@ +<?php +/** + * ownCloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Bernhard Posselt <dev@bernhard-posselt.com> + * @copyright Bernhard Posselt 2016 + */ + +namespace OCA\News\Command\Updater; + +use Exception; + +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +use OCA\News\Service\FeedService; + + +class AllFeeds extends Command { + private $feedService; + + public function __construct(FeedService $feedService) { + parent::__construct(); + $this->feedService = $feedService; + } + + protected function configure() { + $json = '{"feeds": [{"id": 39, "userId": "john"}, // etc ]}'; + + $this->setName('news:updater:all-feeds') + ->setDescription('Prints a JSON string which contains all feed ' . + 'ids and user ids, e.g.: ' . $json); + } + + protected function execute(InputInterface $input, OutputInterface $output) { + $feeds = $this->feedService->findAllFromAllUsers(); + $result = ['feeds' => []]; + + foreach ($feeds as $feed) { + $result['feeds'][] = [ + 'id' => $feed->getId(), + 'userId' => $feed->getUserId() + ]; + } + + print(json_encode($result)); + } + +} diff --git a/command/updater/beforeupdate.php b/command/updater/beforeupdate.php new file mode 100644 index 000000000..6af0a5c3a --- /dev/null +++ b/command/updater/beforeupdate.php @@ -0,0 +1,41 @@ +<?php +/** + * ownCloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Bernhard Posselt <dev@bernhard-posselt.com> + * @copyright Bernhard Posselt 2016 + */ + +namespace OCA\News\Command\Updater; + +use Exception; + +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +use \OCA\News\Utility\Updater; + +class BeforeUpdate extends Command { + private $updater; + + public function __construct(Updater $updater) { + parent::__construct(); + $this->updater = $updater; + } + + protected function configure() { + $this->setName('news:updater:before-update') + ->setDescription('This is used to clean up the database. It ' . + 'deletes folders and feeds that are marked for ' . + 'deletion'); + } + + protected function execute(InputInterface $input, OutputInterface $output) { + $this->updater->beforeUpdate(); + } + +} diff --git a/command/updater/updatefeed.php b/command/updater/updatefeed.php new file mode 100644 index 000000000..13fc2e625 --- /dev/null +++ b/command/updater/updatefeed.php @@ -0,0 +1,59 @@ +<?php +/** + * ownCloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Bernhard Posselt <dev@bernhard-posselt.com> + * @copyright Bernhard Posselt 2016 + */ + +namespace OCA\News\Command\Updater; + +use Exception; + +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +use OCA\News\Service\FeedService; + + +class UpdateFeed extends Command { + private $feedService; + + public function __construct(FeedService $feedService) { + parent::__construct(); + $this->feedService = $feedService; + } + + protected function configure() { + $this->setName('news:updater:update-feed') + ->addArgument( + 'feed-id', + InputArgument::REQUIRED, + 'feed id, integer' + ) + ->addArgument( + 'user-id', + InputArgument::REQUIRED, + 'user id of a user, string' + ) + ->setDescription('Console API for updating a single user\'s feed'); + } + + protected function execute(InputInterface $input, OutputInterface $output) { + $feedId = $input->getArgument('feed-id'); + $userId = $input->getArgument('user-id'); + try { + $this->feedService->update($feedId, $userId); + } catch (Exception $e) { + $output->writeln('<error>Could not update feed with id ' . $feedId . + ' and user ' . $userId . ': ' . $e->getMessage() . + '</error> '); + } + } + +} |