Merge pull request #516 from acelaya-forks/feature/qr-code-with-domain

Feature/qr code with domain
This commit is contained in:
Alejandro Celaya 2019-10-22 20:03:37 +02:00 committed by GitHub
commit 43cb91bf52
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 15 additions and 10 deletions

1
.github/FUNDING.yml vendored
View file

@ -1 +1,2 @@
github: ['acelaya']
custom: ['https://acel.me/donate']

View file

@ -30,6 +30,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com), and this
* [#507](https://github.com/shlinkio/shlink/issues/507) Fixed error with too long original URLs by increasing size to the maximum value (2048) based on [the standard](https://stackoverflow.com/a/417184).
* [#502](https://github.com/shlinkio/shlink/issues/502) Fixed error when providing the port as part of the domain on short URLs.
* [#509](https://github.com/shlinkio/shlink/issues/509) Fixed error when trying to generate a QR code for a short URL which uses a custom domain.
## 1.19.0 - 2019-10-05

View file

@ -59,8 +59,10 @@ class QrCodeAction implements MiddlewareInterface
{
// Make sure the short URL exists for this short code
$shortCode = $request->getAttribute('shortCode');
$domain = $request->getUri()->getAuthority();
try {
$this->urlShortener->shortCodeToUrl($shortCode);
$this->urlShortener->shortCodeToUrl($shortCode, $domain);
} catch (InvalidShortCodeException | EntityDoesNotExistException $e) {
$this->logger->warning('An error occurred while creating QR code. {e}', ['e' => $e]);
return $this->buildErrorResponse($request, $handler);

View file

@ -152,6 +152,7 @@ class UrlShortener implements UrlShortenerInterface
if ($shortUrl === null) {
throw EntityDoesNotExistException::createFromEntityAndConditions(ShortUrl::class, [
'shortCode' => $shortCode,
'domain' => $domain,
]);
}

View file

@ -36,11 +36,11 @@ class QrCodeActionTest extends TestCase
}
/** @test */
public function aNotFoundShortCodeWillDelegateIntoNextMiddleware()
public function aNotFoundShortCodeWillDelegateIntoNextMiddleware(): void
{
$shortCode = 'abc123';
$this->urlShortener->shortCodeToUrl($shortCode)->willThrow(EntityDoesNotExistException::class)
->shouldBeCalledOnce();
$this->urlShortener->shortCodeToUrl($shortCode, '')->willThrow(EntityDoesNotExistException::class)
->shouldBeCalledOnce();
$delegate = $this->prophesize(RequestHandlerInterface::class);
$process = $delegate->handle(Argument::any())->willReturn(new Response());
@ -50,11 +50,11 @@ class QrCodeActionTest extends TestCase
}
/** @test */
public function anInvalidShortCodeWillReturnNotFoundResponse()
public function anInvalidShortCodeWillReturnNotFoundResponse(): void
{
$shortCode = 'abc123';
$this->urlShortener->shortCodeToUrl($shortCode)->willThrow(InvalidShortCodeException::class)
->shouldBeCalledOnce();
$this->urlShortener->shortCodeToUrl($shortCode, '')->willThrow(InvalidShortCodeException::class)
->shouldBeCalledOnce();
$delegate = $this->prophesize(RequestHandlerInterface::class);
$process = $delegate->handle(Argument::any())->willReturn(new Response());
@ -64,11 +64,11 @@ class QrCodeActionTest extends TestCase
}
/** @test */
public function aCorrectRequestReturnsTheQrCodeResponse()
public function aCorrectRequestReturnsTheQrCodeResponse(): void
{
$shortCode = 'abc123';
$this->urlShortener->shortCodeToUrl($shortCode)->willReturn(new ShortUrl(''))
->shouldBeCalledOnce();
$this->urlShortener->shortCodeToUrl($shortCode, '')->willReturn(new ShortUrl(''))
->shouldBeCalledOnce();
$delegate = $this->prophesize(RequestHandlerInterface::class);
$resp = $this->action->process(