shortUrlService = $shortUrlService; $this->previewGenerator = $previewGenerator; $this->translator = $translator; parent::__construct(null); } public function configure() { $this->setName('shortcode:process-previews') ->setDescription( $this->translator->translate( 'Processes and generates the previews for every URL, improving performance for later web requests.' ) ); } public function execute(InputInterface $input, OutputInterface $output) { $page = 1; do { $shortUrls = $this->shortUrlService->listShortUrls($page); $page += 1; foreach ($shortUrls as $shortUrl) { $this->processUrl($shortUrl->getOriginalUrl(), $output); } } while ($page <= $shortUrls->count()); $output->writeln('' . $this->translator->translate('Finished processing all URLs') . ''); } protected function processUrl($url, OutputInterface $output) { try { $output->write(sprintf($this->translator->translate('Processing URL %s...'), $url)); $this->previewGenerator->generatePreview($url); $output->writeln($this->translator->translate(' Success!')); } catch (PreviewGenerationException $e) { $messages = [' ' . $this->translator->translate('Error') . '']; if ($output->isVerbose()) { $messages[] = '' . $e->__toString() . ''; } $output->writeln($messages); } } }