mirror of
https://github.com/shlinkio/shlink.git
synced 2024-12-28 09:51:40 -06:00
Registered PersistenceDomainResolver as a service to avoid instantiating a new one on every ShortUrl creation
This commit is contained in:
parent
682a0768b7
commit
181ff16409
@ -9,6 +9,7 @@ use Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory;
|
|||||||
use Mezzio\Router\RouterInterface;
|
use Mezzio\Router\RouterInterface;
|
||||||
use Mezzio\Template\TemplateRendererInterface;
|
use Mezzio\Template\TemplateRendererInterface;
|
||||||
use Psr\EventDispatcher\EventDispatcherInterface;
|
use Psr\EventDispatcher\EventDispatcherInterface;
|
||||||
|
use Shlinkio\Shlink\Core\Domain\Resolver;
|
||||||
use Shlinkio\Shlink\Core\ErrorHandler;
|
use Shlinkio\Shlink\Core\ErrorHandler;
|
||||||
use Shlinkio\Shlink\Core\Options\NotFoundRedirectOptions;
|
use Shlinkio\Shlink\Core\Options\NotFoundRedirectOptions;
|
||||||
|
|
||||||
@ -39,6 +40,8 @@ return [
|
|||||||
Action\QrCodeAction::class => ConfigAbstractFactory::class,
|
Action\QrCodeAction::class => ConfigAbstractFactory::class,
|
||||||
|
|
||||||
Middleware\QrCodeCacheMiddleware::class => ConfigAbstractFactory::class,
|
Middleware\QrCodeCacheMiddleware::class => ConfigAbstractFactory::class,
|
||||||
|
|
||||||
|
Resolver\PersistenceDomainResolver::class => ConfigAbstractFactory::class,
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
@ -51,7 +54,7 @@ return [
|
|||||||
Options\NotFoundRedirectOptions::class => ['config.not_found_redirects'],
|
Options\NotFoundRedirectOptions::class => ['config.not_found_redirects'],
|
||||||
Options\UrlShortenerOptions::class => ['config.url_shortener'],
|
Options\UrlShortenerOptions::class => ['config.url_shortener'],
|
||||||
|
|
||||||
Service\UrlShortener::class => [Util\UrlValidator::class, 'em'],
|
Service\UrlShortener::class => [Util\UrlValidator::class, 'em', Resolver\PersistenceDomainResolver::class],
|
||||||
Service\VisitsTracker::class => ['em', EventDispatcherInterface::class],
|
Service\VisitsTracker::class => ['em', EventDispatcherInterface::class],
|
||||||
Service\ShortUrlService::class => ['em', Service\ShortUrl\ShortUrlResolver::class],
|
Service\ShortUrlService::class => ['em', Service\ShortUrl\ShortUrlResolver::class],
|
||||||
Service\VisitService::class => ['em'],
|
Service\VisitService::class => ['em'],
|
||||||
@ -84,6 +87,8 @@ return [
|
|||||||
],
|
],
|
||||||
|
|
||||||
Middleware\QrCodeCacheMiddleware::class => [Cache::class],
|
Middleware\QrCodeCacheMiddleware::class => [Cache::class],
|
||||||
|
|
||||||
|
Resolver\PersistenceDomainResolver::class => ['em'],
|
||||||
],
|
],
|
||||||
|
|
||||||
];
|
];
|
||||||
|
@ -6,7 +6,7 @@ namespace Shlinkio\Shlink\Core\Service;
|
|||||||
|
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Psr\Http\Message\UriInterface;
|
use Psr\Http\Message\UriInterface;
|
||||||
use Shlinkio\Shlink\Core\Domain\Resolver\PersistenceDomainResolver;
|
use Shlinkio\Shlink\Core\Domain\Resolver\DomainResolverInterface;
|
||||||
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
use Shlinkio\Shlink\Core\Entity\ShortUrl;
|
||||||
use Shlinkio\Shlink\Core\Exception\InvalidUrlException;
|
use Shlinkio\Shlink\Core\Exception\InvalidUrlException;
|
||||||
use Shlinkio\Shlink\Core\Exception\NonUniqueSlugException;
|
use Shlinkio\Shlink\Core\Exception\NonUniqueSlugException;
|
||||||
@ -24,13 +24,16 @@ class UrlShortener implements UrlShortenerInterface
|
|||||||
|
|
||||||
private EntityManagerInterface $em;
|
private EntityManagerInterface $em;
|
||||||
private UrlValidatorInterface $urlValidator;
|
private UrlValidatorInterface $urlValidator;
|
||||||
|
private DomainResolverInterface $domainResolver;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
UrlValidatorInterface $urlValidator,
|
UrlValidatorInterface $urlValidator,
|
||||||
EntityManagerInterface $em
|
EntityManagerInterface $em,
|
||||||
|
DomainResolverInterface $domainResolver
|
||||||
) {
|
) {
|
||||||
$this->urlValidator = $urlValidator;
|
$this->urlValidator = $urlValidator;
|
||||||
$this->em = $em;
|
$this->em = $em;
|
||||||
|
$this->domainResolver = $domainResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -51,7 +54,7 @@ class UrlShortener implements UrlShortenerInterface
|
|||||||
|
|
||||||
$this->urlValidator->validateUrl($url);
|
$this->urlValidator->validateUrl($url);
|
||||||
$this->em->beginTransaction();
|
$this->em->beginTransaction();
|
||||||
$shortUrl = new ShortUrl($url, $meta, new PersistenceDomainResolver($this->em));
|
$shortUrl = new ShortUrl($url, $meta, $this->domainResolver);
|
||||||
$shortUrl->setTags($this->tagNamesToEntities($this->em, $tags));
|
$shortUrl->setTags($this->tagNamesToEntities($this->em, $tags));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -13,6 +13,7 @@ use Laminas\Diactoros\Uri;
|
|||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use Prophecy\Argument;
|
use Prophecy\Argument;
|
||||||
use Prophecy\Prophecy\ObjectProphecy;
|
use Prophecy\Prophecy\ObjectProphecy;
|
||||||
|
use Shlinkio\Shlink\Core\Domain\Resolver\SimpleDomainResolver;
|
||||||
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\NonUniqueSlugException;
|
use Shlinkio\Shlink\Core\Exception\NonUniqueSlugException;
|
||||||
@ -53,7 +54,11 @@ class UrlShortenerTest extends TestCase
|
|||||||
$repo->shortCodeIsInUse(Argument::cetera())->willReturn(false);
|
$repo->shortCodeIsInUse(Argument::cetera())->willReturn(false);
|
||||||
$this->em->getRepository(ShortUrl::class)->willReturn($repo->reveal());
|
$this->em->getRepository(ShortUrl::class)->willReturn($repo->reveal());
|
||||||
|
|
||||||
$this->urlShortener = new UrlShortener($this->urlValidator->reveal(), $this->em->reveal());
|
$this->urlShortener = new UrlShortener(
|
||||||
|
$this->urlValidator->reveal(),
|
||||||
|
$this->em->reveal(),
|
||||||
|
new SimpleDomainResolver(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @test */
|
/** @test */
|
||||||
|
Loading…
Reference in New Issue
Block a user