From 59ca64902e9be76882db16c07e65dc342a336201 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Mon, 28 Mar 2016 19:50:50 +0200 Subject: add console based update api which does not require authentication --- appinfo/register_command.php | 24 ++++++++++++++++ command/updater/afterupdate.php | 40 +++++++++++++++++++++++++++ command/updater/allfeeds.php | 53 ++++++++++++++++++++++++++++++++++++ command/updater/beforeupdate.php | 41 ++++++++++++++++++++++++++++ command/updater/updatefeed.php | 59 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 217 insertions(+) create mode 100644 appinfo/register_command.php create mode 100644 command/updater/afterupdate.php create mode 100644 command/updater/allfeeds.php create mode 100644 command/updater/beforeupdate.php create mode 100644 command/updater/updatefeed.php 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 @@ + + * @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 @@ + + * @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 @@ + + * @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 @@ + + * @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 @@ + + * @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('Could not update feed with id ' . $feedId . + ' and user ' . $userId . ': ' . $e->getMessage() . + ' '); + } + } + +} -- cgit v1.2.3