deleteShortUrlService = $deleteShortUrlService; $this->translator = $translator; } /** * Handle the request and return a response. */ public function handle(ServerRequestInterface $request): ResponseInterface { $shortCode = $request->getAttribute('shortCode', ''); try { $this->deleteShortUrlService->deleteByShortCode($shortCode); return new EmptyResponse(); } catch (Exception\InvalidShortCodeException $e) { $this->logger->warning( \sprintf('Provided short code %s does not belong to any URL.', $shortCode) . PHP_EOL . $e ); return new JsonResponse([ 'error' => RestUtils::getRestErrorCodeFromException($e), 'message' => \sprintf($this->translator->translate('No URL found for short code "%s"'), $shortCode), ], self::STATUS_NOT_FOUND); } catch (Exception\DeleteShortUrlException $e) { $this->logger->warning('Provided data is invalid.' . PHP_EOL . $e); $messagePlaceholder = $this->translator->translate( 'It is not possible to delete URL with short code "%s" because it has reached more than "%s" visits.' ); return new JsonResponse([ 'error' => RestUtils::getRestErrorCodeFromException($e), 'message' => \sprintf($messagePlaceholder, $shortCode, $e->getVisitsThreshold()), ], self::STATUS_BAD_REQUEST); } } }