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(' <info>Success!</info>')); } catch (PreviewGenerationException $e) { $messages = [' <error>' . $this->translator->translate('Error') . '</error>']; if ($output->isVerbose()) { $messages[] = '<error>' . $e->__toString() . '</error>'; } $output->writeln($messages); } }
/** * Process an incoming request and/or response. * * Accepts a server-side request and a response instance, and does * something with them. * * If the response is not complete and/or further processing would not * interfere with the work done in the middleware, or if the middleware * wants to delegate to another process, it can use the `$out` callable * if present. * * If the middleware does not return a value, execution of the current * request is considered complete, and the response instance provided will * be considered the response to return. * * Alternately, the middleware may return a response instance. * * Often, middleware will `return $out();`, with the assumption that a * later middleware will return a response. * * @param Request $request * @param Response $response * @param null|callable $out * @return null|Response */ public function __invoke(Request $request, Response $response, callable $out = null) { $shortCode = $request->getAttribute('shortCode'); try { $url = $this->urlShortener->shortCodeToUrl($shortCode); if (!isset($url)) { return $out($request, $response->withStatus(404), 'Not found'); } $imagePath = $this->previewGenerator->generatePreview($url); return $this->generateImageResponse($imagePath); } catch (InvalidShortCodeException $e) { return $out($request, $response->withStatus(404), 'Not found'); } catch (PreviewGenerationException $e) { return $out($request, $response->withStatus(500), 'Preview generation error'); } }