mirror of
https://github.com/shlinkio/shlink.git
synced 2025-02-25 19:59:04 +03:00
Renamed InvalidShortCodeException to ShortCodeNotFoundException
This commit is contained in:
parent
cdd36b6712
commit
2f1de4a162
24 changed files with 58 additions and 47 deletions
|
@ -55,7 +55,7 @@ class DeleteShortUrlCommand extends Command
|
||||||
try {
|
try {
|
||||||
$this->runDelete($io, $shortCode, $ignoreThreshold);
|
$this->runDelete($io, $shortCode, $ignoreThreshold);
|
||||||
return ExitCodes::EXIT_SUCCESS;
|
return ExitCodes::EXIT_SUCCESS;
|
||||||
} catch (Exception\InvalidShortCodeException $e) {
|
} catch (Exception\ShortUrlNotFoundException $e) {
|
||||||
$io->error(sprintf('Provided short code "%s" could not be found.', $shortCode));
|
$io->error(sprintf('Provided short code "%s" could not be found.', $shortCode));
|
||||||
return ExitCodes::EXIT_FAILURE;
|
return ExitCodes::EXIT_FAILURE;
|
||||||
} catch (Exception\DeleteShortUrlException $e) {
|
} catch (Exception\DeleteShortUrlException $e) {
|
||||||
|
|
|
@ -6,7 +6,7 @@ namespace Shlinkio\Shlink\CLI\Command\ShortUrl;
|
||||||
|
|
||||||
use Shlinkio\Shlink\CLI\Util\ExitCodes;
|
use Shlinkio\Shlink\CLI\Util\ExitCodes;
|
||||||
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
|
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Core\Service\UrlShortenerInterface;
|
use Shlinkio\Shlink\Core\Service\UrlShortenerInterface;
|
||||||
use Symfony\Component\Console\Command\Command;
|
use Symfony\Component\Console\Command\Command;
|
||||||
use Symfony\Component\Console\Input\InputArgument;
|
use Symfony\Component\Console\Input\InputArgument;
|
||||||
|
@ -65,7 +65,7 @@ class ResolveUrlCommand extends Command
|
||||||
$url = $this->urlShortener->shortCodeToUrl($shortCode, $domain);
|
$url = $this->urlShortener->shortCodeToUrl($shortCode, $domain);
|
||||||
$output->writeln(sprintf('Long URL: <info>%s</info>', $url->getLongUrl()));
|
$output->writeln(sprintf('Long URL: <info>%s</info>', $url->getLongUrl()));
|
||||||
return ExitCodes::EXIT_SUCCESS;
|
return ExitCodes::EXIT_SUCCESS;
|
||||||
} catch (InvalidShortCodeException $e) {
|
} catch (ShortUrlNotFoundException $e) {
|
||||||
$io->error(sprintf('Provided short code "%s" has an invalid format.', $shortCode));
|
$io->error(sprintf('Provided short code "%s" has an invalid format.', $shortCode));
|
||||||
return ExitCodes::EXIT_FAILURE;
|
return ExitCodes::EXIT_FAILURE;
|
||||||
} catch (EntityDoesNotExistException $e) {
|
} catch (EntityDoesNotExistException $e) {
|
||||||
|
|
|
@ -58,7 +58,7 @@ class DeleteShortUrlCommandTest extends TestCase
|
||||||
{
|
{
|
||||||
$shortCode = 'abc123';
|
$shortCode = 'abc123';
|
||||||
$deleteByShortCode = $this->service->deleteByShortCode($shortCode, false)->willThrow(
|
$deleteByShortCode = $this->service->deleteByShortCode($shortCode, false)->willThrow(
|
||||||
Exception\InvalidShortCodeException::class
|
Exception\ShortUrlNotFoundException::class
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->commandTester->execute(['shortCode' => $shortCode]);
|
$this->commandTester->execute(['shortCode' => $shortCode]);
|
||||||
|
|
|
@ -9,7 +9,7 @@ use Prophecy\Prophecy\ObjectProphecy;
|
||||||
use Shlinkio\Shlink\CLI\Command\ShortUrl\ResolveUrlCommand;
|
use Shlinkio\Shlink\CLI\Command\ShortUrl\ResolveUrlCommand;
|
||||||
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
||||||
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
|
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Core\Service\UrlShortener;
|
use Shlinkio\Shlink\Core\Service\UrlShortener;
|
||||||
use Symfony\Component\Console\Application;
|
use Symfony\Component\Console\Application;
|
||||||
use Symfony\Component\Console\Tester\CommandTester;
|
use Symfony\Component\Console\Tester\CommandTester;
|
||||||
|
@ -63,7 +63,7 @@ class ResolveUrlCommandTest extends TestCase
|
||||||
public function wrongShortCodeFormatOutputsErrorMessage(): void
|
public function wrongShortCodeFormatOutputsErrorMessage(): void
|
||||||
{
|
{
|
||||||
$shortCode = 'abc123';
|
$shortCode = 'abc123';
|
||||||
$this->urlShortener->shortCodeToUrl($shortCode, null)->willThrow(new InvalidShortCodeException())
|
$this->urlShortener->shortCodeToUrl($shortCode, null)->willThrow(new ShortUrlNotFoundException())
|
||||||
->shouldBeCalledOnce();
|
->shouldBeCalledOnce();
|
||||||
|
|
||||||
$this->commandTester->execute(['shortCode' => $shortCode]);
|
$this->commandTester->execute(['shortCode' => $shortCode]);
|
||||||
|
|
|
@ -12,7 +12,7 @@ use Psr\Log\LoggerInterface;
|
||||||
use Psr\Log\NullLogger;
|
use Psr\Log\NullLogger;
|
||||||
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
||||||
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
|
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Core\Model\Visitor;
|
use Shlinkio\Shlink\Core\Model\Visitor;
|
||||||
use Shlinkio\Shlink\Core\Options\AppOptions;
|
use Shlinkio\Shlink\Core\Options\AppOptions;
|
||||||
use Shlinkio\Shlink\Core\Service\UrlShortenerInterface;
|
use Shlinkio\Shlink\Core\Service\UrlShortenerInterface;
|
||||||
|
@ -72,7 +72,7 @@ abstract class AbstractTrackingAction implements MiddlewareInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->createSuccessResp($this->buildUrlToRedirectTo($url, $query, $disableTrackParam));
|
return $this->createSuccessResp($this->buildUrlToRedirectTo($url, $query, $disableTrackParam));
|
||||||
} catch (InvalidShortCodeException | EntityDoesNotExistException $e) {
|
} catch (ShortUrlNotFoundException | EntityDoesNotExistException $e) {
|
||||||
$this->logger->warning('An error occurred while tracking short code. {e}', ['e' => $e]);
|
$this->logger->warning('An error occurred while tracking short code. {e}', ['e' => $e]);
|
||||||
return $this->createErrorResp($request, $handler);
|
return $this->createErrorResp($request, $handler);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ use Psr\Log\LoggerInterface;
|
||||||
use Psr\Log\NullLogger;
|
use Psr\Log\NullLogger;
|
||||||
use Shlinkio\Shlink\Common\Response\ResponseUtilsTrait;
|
use Shlinkio\Shlink\Common\Response\ResponseUtilsTrait;
|
||||||
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
|
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Core\Service\UrlShortenerInterface;
|
use Shlinkio\Shlink\Core\Service\UrlShortenerInterface;
|
||||||
use Shlinkio\Shlink\PreviewGenerator\Exception\PreviewGenerationException;
|
use Shlinkio\Shlink\PreviewGenerator\Exception\PreviewGenerationException;
|
||||||
use Shlinkio\Shlink\PreviewGenerator\Service\PreviewGeneratorInterface;
|
use Shlinkio\Shlink\PreviewGenerator\Service\PreviewGeneratorInterface;
|
||||||
|
@ -56,7 +56,7 @@ class PreviewAction implements MiddlewareInterface
|
||||||
$url = $this->urlShortener->shortCodeToUrl($shortCode);
|
$url = $this->urlShortener->shortCodeToUrl($shortCode);
|
||||||
$imagePath = $this->previewGenerator->generatePreview($url->getLongUrl());
|
$imagePath = $this->previewGenerator->generatePreview($url->getLongUrl());
|
||||||
return $this->generateImageResponse($imagePath);
|
return $this->generateImageResponse($imagePath);
|
||||||
} catch (InvalidShortCodeException | EntityDoesNotExistException | PreviewGenerationException $e) {
|
} catch (ShortUrlNotFoundException | EntityDoesNotExistException | PreviewGenerationException $e) {
|
||||||
$this->logger->warning('An error occurred while generating preview image. {e}', ['e' => $e]);
|
$this->logger->warning('An error occurred while generating preview image. {e}', ['e' => $e]);
|
||||||
return $handler->handle($request);
|
return $handler->handle($request);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ use Psr\Log\LoggerInterface;
|
||||||
use Psr\Log\NullLogger;
|
use Psr\Log\NullLogger;
|
||||||
use Shlinkio\Shlink\Common\Response\QrCodeResponse;
|
use Shlinkio\Shlink\Common\Response\QrCodeResponse;
|
||||||
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
|
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Core\Service\UrlShortenerInterface;
|
use Shlinkio\Shlink\Core\Service\UrlShortenerInterface;
|
||||||
use Zend\Expressive\Router\Exception\RuntimeException;
|
use Zend\Expressive\Router\Exception\RuntimeException;
|
||||||
use Zend\Expressive\Router\RouterInterface;
|
use Zend\Expressive\Router\RouterInterface;
|
||||||
|
@ -60,7 +60,7 @@ class QrCodeAction implements MiddlewareInterface
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->urlShortener->shortCodeToUrl($shortCode, $domain);
|
$this->urlShortener->shortCodeToUrl($shortCode, $domain);
|
||||||
} catch (InvalidShortCodeException | EntityDoesNotExistException $e) {
|
} catch (ShortUrlNotFoundException | EntityDoesNotExistException $e) {
|
||||||
$this->logger->warning('An error occurred while creating QR code. {e}', ['e' => $e]);
|
$this->logger->warning('An error occurred while creating QR code. {e}', ['e' => $e]);
|
||||||
return $handler->handle($request);
|
return $handler->handle($request);
|
||||||
}
|
}
|
||||||
|
|
11
module/Core/src/Exception/DomainException.php
Normal file
11
module/Core/src/Exception/DomainException.php
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Shlinkio\Shlink\Core\Exception;
|
||||||
|
|
||||||
|
use DomainException as SplDomainException;
|
||||||
|
|
||||||
|
class DomainException extends SplDomainException implements ExceptionInterface
|
||||||
|
{
|
||||||
|
}
|
|
@ -10,11 +10,11 @@ use Zend\ProblemDetails\Exception\ProblemDetailsExceptionInterface;
|
||||||
|
|
||||||
use function sprintf;
|
use function sprintf;
|
||||||
|
|
||||||
class InvalidShortCodeException extends RuntimeException implements ProblemDetailsExceptionInterface
|
class ShortUrlNotFoundException extends DomainException implements ProblemDetailsExceptionInterface
|
||||||
{
|
{
|
||||||
use CommonProblemDetailsExceptionTrait;
|
use CommonProblemDetailsExceptionTrait;
|
||||||
|
|
||||||
private const TITLE = 'Invalid short code';
|
private const TITLE = 'Short URL not found';
|
||||||
public const TYPE = 'INVALID_SHORTCODE';
|
public const TYPE = 'INVALID_SHORTCODE';
|
||||||
|
|
||||||
public static function fromNotFoundShortCode(string $shortCode): self
|
public static function fromNotFoundShortCode(string $shortCode): self
|
|
@ -25,7 +25,7 @@ class DeleteShortUrlService implements DeleteShortUrlServiceInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @throws Exception\InvalidShortCodeException
|
* @throws Exception\ShortUrlNotFoundException
|
||||||
* @throws Exception\DeleteShortUrlException
|
* @throws Exception\DeleteShortUrlException
|
||||||
*/
|
*/
|
||||||
public function deleteByShortCode(string $shortCode, bool $ignoreThreshold = false): void
|
public function deleteByShortCode(string $shortCode, bool $ignoreThreshold = false): void
|
||||||
|
|
|
@ -9,7 +9,7 @@ use Shlinkio\Shlink\Core\Exception;
|
||||||
interface DeleteShortUrlServiceInterface
|
interface DeleteShortUrlServiceInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @throws Exception\InvalidShortCodeException
|
* @throws Exception\ShortUrlNotFoundException
|
||||||
* @throws Exception\DeleteShortUrlException
|
* @throws Exception\DeleteShortUrlException
|
||||||
*/
|
*/
|
||||||
public function deleteByShortCode(string $shortCode, bool $ignoreThreshold = false): void;
|
public function deleteByShortCode(string $shortCode, bool $ignoreThreshold = false): void;
|
||||||
|
|
|
@ -6,14 +6,14 @@ namespace Shlinkio\Shlink\Core\Service\ShortUrl;
|
||||||
|
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
|
|
||||||
trait FindShortCodeTrait
|
trait FindShortCodeTrait
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @param string $shortCode
|
* @param string $shortCode
|
||||||
* @return ShortUrl
|
* @return ShortUrl
|
||||||
* @throws InvalidShortCodeException
|
* @throws ShortUrlNotFoundException
|
||||||
*/
|
*/
|
||||||
private function findByShortCode(EntityManagerInterface $em, string $shortCode): ShortUrl
|
private function findByShortCode(EntityManagerInterface $em, string $shortCode): ShortUrl
|
||||||
{
|
{
|
||||||
|
@ -22,7 +22,7 @@ trait FindShortCodeTrait
|
||||||
'shortCode' => $shortCode,
|
'shortCode' => $shortCode,
|
||||||
]);
|
]);
|
||||||
if ($shortUrl === null) {
|
if ($shortUrl === null) {
|
||||||
throw InvalidShortCodeException::fromNotFoundShortCode($shortCode);
|
throw ShortUrlNotFoundException::fromNotFoundShortCode($shortCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $shortUrl;
|
return $shortUrl;
|
||||||
|
|
|
@ -6,7 +6,7 @@ namespace Shlinkio\Shlink\Core\Service;
|
||||||
|
|
||||||
use Doctrine\ORM;
|
use Doctrine\ORM;
|
||||||
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Core\Model\ShortUrlMeta;
|
use Shlinkio\Shlink\Core\Model\ShortUrlMeta;
|
||||||
use Shlinkio\Shlink\Core\Paginator\Adapter\ShortUrlRepositoryAdapter;
|
use Shlinkio\Shlink\Core\Paginator\Adapter\ShortUrlRepositoryAdapter;
|
||||||
use Shlinkio\Shlink\Core\Repository\ShortUrlRepository;
|
use Shlinkio\Shlink\Core\Repository\ShortUrlRepository;
|
||||||
|
@ -45,7 +45,7 @@ class ShortUrlService implements ShortUrlServiceInterface
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string[] $tags
|
* @param string[] $tags
|
||||||
* @throws InvalidShortCodeException
|
* @throws ShortUrlNotFoundException
|
||||||
*/
|
*/
|
||||||
public function setTagsByShortCode(string $shortCode, array $tags = []): ShortUrl
|
public function setTagsByShortCode(string $shortCode, array $tags = []): ShortUrl
|
||||||
{
|
{
|
||||||
|
@ -57,7 +57,7 @@ class ShortUrlService implements ShortUrlServiceInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @throws InvalidShortCodeException
|
* @throws ShortUrlNotFoundException
|
||||||
*/
|
*/
|
||||||
public function updateMetadataByShortCode(string $shortCode, ShortUrlMeta $shortUrlMeta): ShortUrl
|
public function updateMetadataByShortCode(string $shortCode, ShortUrlMeta $shortUrlMeta): ShortUrl
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,7 +5,7 @@ declare(strict_types=1);
|
||||||
namespace Shlinkio\Shlink\Core\Service;
|
namespace Shlinkio\Shlink\Core\Service;
|
||||||
|
|
||||||
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Core\Model\ShortUrlMeta;
|
use Shlinkio\Shlink\Core\Model\ShortUrlMeta;
|
||||||
use Zend\Paginator\Paginator;
|
use Zend\Paginator\Paginator;
|
||||||
|
|
||||||
|
@ -20,12 +20,12 @@ interface ShortUrlServiceInterface
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string[] $tags
|
* @param string[] $tags
|
||||||
* @throws InvalidShortCodeException
|
* @throws ShortUrlNotFoundException
|
||||||
*/
|
*/
|
||||||
public function setTagsByShortCode(string $shortCode, array $tags = []): ShortUrl;
|
public function setTagsByShortCode(string $shortCode, array $tags = []): ShortUrl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @throws InvalidShortCodeException
|
* @throws ShortUrlNotFoundException
|
||||||
*/
|
*/
|
||||||
public function updateMetadataByShortCode(string $shortCode, ShortUrlMeta $shortUrlMeta): ShortUrl;
|
public function updateMetadataByShortCode(string $shortCode, ShortUrlMeta $shortUrlMeta): ShortUrl;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ use Psr\EventDispatcher\EventDispatcherInterface;
|
||||||
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
||||||
use Shlinkio\Shlink\Core\Entity\Visit;
|
use Shlinkio\Shlink\Core\Entity\Visit;
|
||||||
use Shlinkio\Shlink\Core\EventDispatcher\ShortUrlVisited;
|
use Shlinkio\Shlink\Core\EventDispatcher\ShortUrlVisited;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Core\Model\Visitor;
|
use Shlinkio\Shlink\Core\Model\Visitor;
|
||||||
use Shlinkio\Shlink\Core\Model\VisitsParams;
|
use Shlinkio\Shlink\Core\Model\VisitsParams;
|
||||||
use Shlinkio\Shlink\Core\Paginator\Adapter\VisitsPaginatorAdapter;
|
use Shlinkio\Shlink\Core\Paginator\Adapter\VisitsPaginatorAdapter;
|
||||||
|
@ -51,14 +51,14 @@ class VisitsTracker implements VisitsTrackerInterface
|
||||||
* Returns the visits on certain short code
|
* Returns the visits on certain short code
|
||||||
*
|
*
|
||||||
* @return Visit[]|Paginator
|
* @return Visit[]|Paginator
|
||||||
* @throws InvalidShortCodeException
|
* @throws ShortUrlNotFoundException
|
||||||
*/
|
*/
|
||||||
public function info(string $shortCode, VisitsParams $params): Paginator
|
public function info(string $shortCode, VisitsParams $params): Paginator
|
||||||
{
|
{
|
||||||
/** @var ORM\EntityRepository $repo */
|
/** @var ORM\EntityRepository $repo */
|
||||||
$repo = $this->em->getRepository(ShortUrl::class);
|
$repo = $this->em->getRepository(ShortUrl::class);
|
||||||
if ($repo->count(['shortCode' => $shortCode]) < 1) {
|
if ($repo->count(['shortCode' => $shortCode]) < 1) {
|
||||||
throw InvalidShortCodeException::fromNotFoundShortCode($shortCode);
|
throw ShortUrlNotFoundException::fromNotFoundShortCode($shortCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @var VisitRepository $repo */
|
/** @var VisitRepository $repo */
|
||||||
|
|
|
@ -5,7 +5,7 @@ declare(strict_types=1);
|
||||||
namespace Shlinkio\Shlink\Core\Service;
|
namespace Shlinkio\Shlink\Core\Service;
|
||||||
|
|
||||||
use Shlinkio\Shlink\Core\Entity\Visit;
|
use Shlinkio\Shlink\Core\Entity\Visit;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Core\Model\Visitor;
|
use Shlinkio\Shlink\Core\Model\Visitor;
|
||||||
use Shlinkio\Shlink\Core\Model\VisitsParams;
|
use Shlinkio\Shlink\Core\Model\VisitsParams;
|
||||||
use Zend\Paginator\Paginator;
|
use Zend\Paginator\Paginator;
|
||||||
|
@ -21,7 +21,7 @@ interface VisitsTrackerInterface
|
||||||
* Returns the visits on certain short code
|
* Returns the visits on certain short code
|
||||||
*
|
*
|
||||||
* @return Visit[]|Paginator
|
* @return Visit[]|Paginator
|
||||||
* @throws InvalidShortCodeException
|
* @throws ShortUrlNotFoundException
|
||||||
*/
|
*/
|
||||||
public function info(string $shortCode, VisitsParams $params): Paginator;
|
public function info(string $shortCode, VisitsParams $params): Paginator;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ use Psr\Http\Server\RequestHandlerInterface;
|
||||||
use Shlinkio\Shlink\Core\Action\PreviewAction;
|
use Shlinkio\Shlink\Core\Action\PreviewAction;
|
||||||
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
||||||
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
|
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Core\Service\UrlShortener;
|
use Shlinkio\Shlink\Core\Service\UrlShortener;
|
||||||
use Shlinkio\Shlink\PreviewGenerator\Service\PreviewGenerator;
|
use Shlinkio\Shlink\PreviewGenerator\Service\PreviewGenerator;
|
||||||
use Zend\Diactoros\Response;
|
use Zend\Diactoros\Response;
|
||||||
|
@ -74,7 +74,7 @@ class PreviewActionTest extends TestCase
|
||||||
public function invalidShortCodeExceptionFallsBackToNextMiddleware(): void
|
public function invalidShortCodeExceptionFallsBackToNextMiddleware(): void
|
||||||
{
|
{
|
||||||
$shortCode = 'abc123';
|
$shortCode = 'abc123';
|
||||||
$this->urlShortener->shortCodeToUrl($shortCode)->willThrow(InvalidShortCodeException::class)
|
$this->urlShortener->shortCodeToUrl($shortCode)->willThrow(ShortUrlNotFoundException::class)
|
||||||
->shouldBeCalledOnce();
|
->shouldBeCalledOnce();
|
||||||
$delegate = $this->prophesize(RequestHandlerInterface::class);
|
$delegate = $this->prophesize(RequestHandlerInterface::class);
|
||||||
$process = $delegate->handle(Argument::any())->willReturn(new Response());
|
$process = $delegate->handle(Argument::any())->willReturn(new Response());
|
||||||
|
|
|
@ -12,7 +12,7 @@ use Shlinkio\Shlink\Common\Response\QrCodeResponse;
|
||||||
use Shlinkio\Shlink\Core\Action\QrCodeAction;
|
use Shlinkio\Shlink\Core\Action\QrCodeAction;
|
||||||
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
||||||
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
|
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Core\Service\UrlShortener;
|
use Shlinkio\Shlink\Core\Service\UrlShortener;
|
||||||
use Zend\Diactoros\Response;
|
use Zend\Diactoros\Response;
|
||||||
use Zend\Diactoros\ServerRequest;
|
use Zend\Diactoros\ServerRequest;
|
||||||
|
@ -53,7 +53,7 @@ class QrCodeActionTest extends TestCase
|
||||||
public function anInvalidShortCodeWillReturnNotFoundResponse(): void
|
public function anInvalidShortCodeWillReturnNotFoundResponse(): void
|
||||||
{
|
{
|
||||||
$shortCode = 'abc123';
|
$shortCode = 'abc123';
|
||||||
$this->urlShortener->shortCodeToUrl($shortCode, '')->willThrow(InvalidShortCodeException::class)
|
$this->urlShortener->shortCodeToUrl($shortCode, '')->willThrow(ShortUrlNotFoundException::class)
|
||||||
->shouldBeCalledOnce();
|
->shouldBeCalledOnce();
|
||||||
$delegate = $this->prophesize(RequestHandlerInterface::class);
|
$delegate = $this->prophesize(RequestHandlerInterface::class);
|
||||||
$process = $delegate->handle(Argument::any())->willReturn(new Response());
|
$process = $delegate->handle(Argument::any())->willReturn(new Response());
|
||||||
|
|
|
@ -5,14 +5,14 @@ declare(strict_types=1);
|
||||||
namespace ShlinkioTest\Shlink\Core\Exception;
|
namespace ShlinkioTest\Shlink\Core\Exception;
|
||||||
|
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
|
|
||||||
class InvalidShortCodeExceptionTest extends TestCase
|
class InvalidShortCodeExceptionTest extends TestCase
|
||||||
{
|
{
|
||||||
/** @test */
|
/** @test */
|
||||||
public function properlyCreatesExceptionFromNotFoundShortCode(): void
|
public function properlyCreatesExceptionFromNotFoundShortCode(): void
|
||||||
{
|
{
|
||||||
$e = InvalidShortCodeException::fromNotFoundShortCode('abc123');
|
$e = ShortUrlNotFoundException::fromNotFoundShortCode('abc123');
|
||||||
|
|
||||||
$this->assertEquals('No URL found for short code "abc123"', $e->getMessage());
|
$this->assertEquals('No URL found for short code "abc123"', $e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ use Prophecy\Argument;
|
||||||
use Prophecy\Prophecy\ObjectProphecy;
|
use Prophecy\Prophecy\ObjectProphecy;
|
||||||
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
||||||
use Shlinkio\Shlink\Core\Entity\Tag;
|
use Shlinkio\Shlink\Core\Entity\Tag;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Core\Model\ShortUrlMeta;
|
use Shlinkio\Shlink\Core\Model\ShortUrlMeta;
|
||||||
use Shlinkio\Shlink\Core\Repository\ShortUrlRepository;
|
use Shlinkio\Shlink\Core\Repository\ShortUrlRepository;
|
||||||
use Shlinkio\Shlink\Core\Service\ShortUrlService;
|
use Shlinkio\Shlink\Core\Service\ShortUrlService;
|
||||||
|
@ -62,7 +62,7 @@ class ShortUrlServiceTest extends TestCase
|
||||||
->shouldBeCalledOnce();
|
->shouldBeCalledOnce();
|
||||||
$this->em->getRepository(ShortUrl::class)->willReturn($repo->reveal());
|
$this->em->getRepository(ShortUrl::class)->willReturn($repo->reveal());
|
||||||
|
|
||||||
$this->expectException(InvalidShortCodeException::class);
|
$this->expectException(ShortUrlNotFoundException::class);
|
||||||
$this->service->setTagsByShortCode($shortCode);
|
$this->service->setTagsByShortCode($shortCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ use Psr\Http\Message\ResponseInterface as Response;
|
||||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use Shlinkio\Shlink\Common\Paginator\Util\PaginatorUtilsTrait;
|
use Shlinkio\Shlink\Common\Paginator\Util\PaginatorUtilsTrait;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Core\Model\VisitsParams;
|
use Shlinkio\Shlink\Core\Model\VisitsParams;
|
||||||
use Shlinkio\Shlink\Core\Service\VisitsTrackerInterface;
|
use Shlinkio\Shlink\Core\Service\VisitsTrackerInterface;
|
||||||
use Shlinkio\Shlink\Rest\Action\AbstractRestAction;
|
use Shlinkio\Shlink\Rest\Action\AbstractRestAction;
|
||||||
|
@ -43,7 +43,7 @@ class GetVisitsAction extends AbstractRestAction
|
||||||
return new JsonResponse([
|
return new JsonResponse([
|
||||||
'visits' => $this->serializePaginator($visits),
|
'visits' => $this->serializePaginator($visits),
|
||||||
]);
|
]);
|
||||||
} catch (InvalidShortCodeException $e) {
|
} catch (ShortUrlNotFoundException $e) {
|
||||||
$this->logger->warning('Provided nonexistent short code {e}', ['e' => $e]);
|
$this->logger->warning('Provided nonexistent short code {e}', ['e' => $e]);
|
||||||
return new JsonResponse([
|
return new JsonResponse([
|
||||||
'error' => RestUtils::INVALID_ARGUMENT_ERROR, // FIXME Wrong code. Use correct one in "type"
|
'error' => RestUtils::INVALID_ARGUMENT_ERROR, // FIXME Wrong code. Use correct one in "type"
|
||||||
|
|
|
@ -6,14 +6,14 @@ namespace Shlinkio\Shlink\Rest\Util;
|
||||||
|
|
||||||
use Shlinkio\Shlink\Common\Exception as Common;
|
use Shlinkio\Shlink\Common\Exception as Common;
|
||||||
use Shlinkio\Shlink\Core\Exception as Core;
|
use Shlinkio\Shlink\Core\Exception as Core;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Rest\Exception as Rest;
|
use Shlinkio\Shlink\Rest\Exception as Rest;
|
||||||
use Throwable;
|
use Throwable;
|
||||||
|
|
||||||
class RestUtils
|
class RestUtils
|
||||||
{
|
{
|
||||||
/** @deprecated */
|
/** @deprecated */
|
||||||
public const INVALID_SHORTCODE_ERROR = InvalidShortCodeException::TYPE;
|
public const INVALID_SHORTCODE_ERROR = ShortUrlNotFoundException::TYPE;
|
||||||
// FIXME Should be INVALID_SHORT_URL_DELETION
|
// FIXME Should be INVALID_SHORT_URL_DELETION
|
||||||
public const INVALID_SHORTCODE_DELETION_ERROR = 'INVALID_SHORTCODE_DELETION';
|
public const INVALID_SHORTCODE_DELETION_ERROR = 'INVALID_SHORTCODE_DELETION';
|
||||||
public const INVALID_URL_ERROR = 'INVALID_URL';
|
public const INVALID_URL_ERROR = 'INVALID_URL';
|
||||||
|
@ -30,7 +30,7 @@ class RestUtils
|
||||||
public static function getRestErrorCodeFromException(Throwable $e): string
|
public static function getRestErrorCodeFromException(Throwable $e): string
|
||||||
{
|
{
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case $e instanceof Core\InvalidShortCodeException:
|
case $e instanceof Core\ShortUrlNotFoundException:
|
||||||
return self::INVALID_SHORTCODE_ERROR;
|
return self::INVALID_SHORTCODE_ERROR;
|
||||||
case $e instanceof Core\InvalidUrlException:
|
case $e instanceof Core\InvalidUrlException:
|
||||||
return self::INVALID_URL_ERROR;
|
return self::INVALID_URL_ERROR;
|
||||||
|
|
|
@ -9,7 +9,7 @@ use PHPUnit\Framework\TestCase;
|
||||||
use Prophecy\Argument;
|
use Prophecy\Argument;
|
||||||
use Prophecy\Prophecy\ObjectProphecy;
|
use Prophecy\Prophecy\ObjectProphecy;
|
||||||
use Shlinkio\Shlink\Common\Util\DateRange;
|
use Shlinkio\Shlink\Common\Util\DateRange;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Core\Model\VisitsParams;
|
use Shlinkio\Shlink\Core\Model\VisitsParams;
|
||||||
use Shlinkio\Shlink\Core\Service\VisitsTracker;
|
use Shlinkio\Shlink\Core\Service\VisitsTracker;
|
||||||
use Shlinkio\Shlink\Rest\Action\Visit\GetVisitsAction;
|
use Shlinkio\Shlink\Rest\Action\Visit\GetVisitsAction;
|
||||||
|
@ -47,7 +47,7 @@ class GetVisitsActionTest extends TestCase
|
||||||
{
|
{
|
||||||
$shortCode = 'abc123';
|
$shortCode = 'abc123';
|
||||||
$this->visitsTracker->info($shortCode, Argument::type(VisitsParams::class))->willThrow(
|
$this->visitsTracker->info($shortCode, Argument::type(VisitsParams::class))->willThrow(
|
||||||
InvalidShortCodeException::class
|
ShortUrlNotFoundException::class
|
||||||
)->shouldBeCalledOnce();
|
)->shouldBeCalledOnce();
|
||||||
|
|
||||||
$response = $this->action->handle((new ServerRequest())->withAttribute('shortCode', $shortCode));
|
$response = $this->action->handle((new ServerRequest())->withAttribute('shortCode', $shortCode));
|
||||||
|
|
|
@ -6,7 +6,7 @@ namespace ShlinkioTest\Shlink\Rest\Util;
|
||||||
|
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use Shlinkio\Shlink\Common\Exception\InvalidArgumentException;
|
use Shlinkio\Shlink\Common\Exception\InvalidArgumentException;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
|
use Shlinkio\Shlink\Core\Exception\ShortUrlNotFoundException;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidUrlException;
|
use Shlinkio\Shlink\Core\Exception\InvalidUrlException;
|
||||||
use Shlinkio\Shlink\IpGeolocation\Exception\WrongIpException;
|
use Shlinkio\Shlink\IpGeolocation\Exception\WrongIpException;
|
||||||
use Shlinkio\Shlink\Rest\Exception\AuthenticationException;
|
use Shlinkio\Shlink\Rest\Exception\AuthenticationException;
|
||||||
|
@ -19,7 +19,7 @@ class RestUtilsTest extends TestCase
|
||||||
{
|
{
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
RestUtils::INVALID_SHORTCODE_ERROR,
|
RestUtils::INVALID_SHORTCODE_ERROR,
|
||||||
RestUtils::getRestErrorCodeFromException(new InvalidShortCodeException())
|
RestUtils::getRestErrorCodeFromException(new ShortUrlNotFoundException())
|
||||||
);
|
);
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
RestUtils::INVALID_URL_ERROR,
|
RestUtils::INVALID_URL_ERROR,
|
||||||
|
|
Loading…
Add table
Reference in a new issue