feedService = $feedService; } /** * Configure command */ protected function configure() { $this->setName('news:feed:add') ->setDescription('Add a feed') ->addArgument('userID', InputArgument::REQUIRED, 'User to add the feed for') ->addArgument('feed', InputArgument::REQUIRED, 'Feed to parse') ->addOption('folder', null, InputOption::VALUE_OPTIONAL, 'Folder ID') ->addOption('title', null, InputOption::VALUE_OPTIONAL, 'Feed title') ->addOption('full-text', null, InputOption::VALUE_OPTIONAL, 'Scrape item URLs', false) ->addOption('username', null, InputOption::VALUE_OPTIONAL, 'Basic auth username') ->addOption('password', null, InputOption::VALUE_OPTIONAL, 'Basic auth password'); } /** * Execute command * * @param InputInterface $input * @param OutputInterface $output * * @return int */ protected function execute(InputInterface $input, OutputInterface $output): int { $url = $input->getArgument('feed'); $user = $input->getArgument('userID'); $folder = (int) $input->getOption('folder') ?? 0; $title = $input->getOption('title'); $username = $input->getOption('username'); $full_text = $input->getOption('full-text'); $password = $input->getOption('password'); $feed = $this->feedService->create($user, $url, $folder, $full_text, $title, $username, $password); $this->feedService->fetch($feed); $output->writeln(json_encode($feed->toAPI(), JSON_PRETTY_PRINT)); return 0; } }