diff --git a/composer.json b/composer.json
index 65edeae5..2f7b201b 100644
--- a/composer.json
+++ b/composer.json
@@ -75,7 +75,8 @@
"Shlinkio\\Shlink\\Core\\": "module/Core/src",
"Shlinkio\\Shlink\\Common\\": "module/Common/src",
"Shlinkio\\Shlink\\EventDispatcher\\": "module/EventDispatcher/src",
- "Shlinkio\\Shlink\\IpGeolocation\\": "module/IpGeolocation/src/"
+ "Shlinkio\\Shlink\\IpGeolocation\\": "module/IpGeolocation/src/",
+ "Shlinkio\\Shlink\\PreviewGenerator\\": "module/PreviewGenerator/src/"
},
"files": [
"module/Common/functions/functions.php",
@@ -94,6 +95,7 @@
"ShlinkioTest\\Shlink\\Common\\": "module/Common/test",
"ShlinkioTest\\Shlink\\EventDispatcher\\": "module/EventDispatcher/test",
"ShlinkioTest\\Shlink\\IpGeolocation\\": "module/IpGeolocation/test",
+ "ShlinkioTest\\Shlink\\PreviewGenerator\\": "module/PreviewGenerator/test",
"Shlinkio\\Shlink\\TestUtils\\": "module/TestUtils/src"
}
},
diff --git a/module/CLI/config/dependencies.config.php b/module/CLI/config/dependencies.config.php
index f014bcb2..2376e5af 100644
--- a/module/CLI/config/dependencies.config.php
+++ b/module/CLI/config/dependencies.config.php
@@ -7,10 +7,10 @@ use Doctrine\DBAL\Connection;
use GeoIp2\Database\Reader;
use Shlinkio\Shlink\CLI\Util\GeolocationDbUpdater;
use Shlinkio\Shlink\Common\Doctrine\NoDbNameConnectionFactory;
-use Shlinkio\Shlink\Common\Service\PreviewGenerator;
use Shlinkio\Shlink\Core\Service;
use Shlinkio\Shlink\IpGeolocation\GeoLite2\DbUpdater;
use Shlinkio\Shlink\IpGeolocation\Resolver\IpLocationResolverInterface;
+use Shlinkio\Shlink\PreviewGenerator\Service\PreviewGenerator;
use Shlinkio\Shlink\Rest\Service\ApiKeyService;
use Symfony\Component\Console as SymfonyCli;
use Symfony\Component\Lock\Factory as Locker;
diff --git a/module/CLI/src/Command/ShortUrl/GeneratePreviewCommand.php b/module/CLI/src/Command/ShortUrl/GeneratePreviewCommand.php
index 9cabe664..3f33f7b0 100644
--- a/module/CLI/src/Command/ShortUrl/GeneratePreviewCommand.php
+++ b/module/CLI/src/Command/ShortUrl/GeneratePreviewCommand.php
@@ -5,8 +5,8 @@ namespace Shlinkio\Shlink\CLI\Command\ShortUrl;
use Shlinkio\Shlink\CLI\Util\ExitCodes;
use Shlinkio\Shlink\Common\Exception\PreviewGenerationException;
-use Shlinkio\Shlink\Common\Service\PreviewGeneratorInterface;
use Shlinkio\Shlink\Core\Service\ShortUrlServiceInterface;
+use Shlinkio\Shlink\PreviewGenerator\Service\PreviewGeneratorInterface;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/module/CLI/test/Command/ShortUrl/GeneratePreviewCommandTest.php b/module/CLI/test/Command/ShortUrl/GeneratePreviewCommandTest.php
index 478977d5..80e7222f 100644
--- a/module/CLI/test/Command/ShortUrl/GeneratePreviewCommandTest.php
+++ b/module/CLI/test/Command/ShortUrl/GeneratePreviewCommandTest.php
@@ -8,9 +8,9 @@ use Prophecy\Argument;
use Prophecy\Prophecy\ObjectProphecy;
use Shlinkio\Shlink\CLI\Command\ShortUrl\GeneratePreviewCommand;
use Shlinkio\Shlink\Common\Exception\PreviewGenerationException;
-use Shlinkio\Shlink\Common\Service\PreviewGenerator;
use Shlinkio\Shlink\Core\Entity\ShortUrl;
use Shlinkio\Shlink\Core\Service\ShortUrlService;
+use Shlinkio\Shlink\PreviewGenerator\Service\PreviewGenerator;
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Tester\CommandTester;
use Zend\Paginator\Adapter\ArrayAdapter;
diff --git a/module/Common/config/dependencies.config.php b/module/Common/config/dependencies.config.php
index fec932e1..d4d3110d 100644
--- a/module/Common/config/dependencies.config.php
+++ b/module/Common/config/dependencies.config.php
@@ -25,10 +25,6 @@ return [
Middleware\LocaleMiddleware::class => ConfigAbstractFactory::class,
Middleware\CloseDbConnectionMiddleware::class => ConfigAbstractFactory::class,
IpAddress::class => Middleware\IpAddressMiddlewareFactory::class,
-
- Image\ImageBuilder::class => Image\ImageBuilderFactory::class,
-
- Service\PreviewGenerator::class => ConfigAbstractFactory::class,
],
'aliases' => [
'httpClient' => GuzzleClient::class,
@@ -47,12 +43,6 @@ return [
Template\Extension\TranslatorExtension::class => ['translator'],
Middleware\LocaleMiddleware::class => ['translator'],
Middleware\CloseDbConnectionMiddleware::class => ['em'],
-
- Service\PreviewGenerator::class => [
- Image\ImageBuilder::class,
- Filesystem::class,
- 'config.preview_generation.files_location',
- ],
],
];
diff --git a/module/Core/config/dependencies.config.php b/module/Core/config/dependencies.config.php
index 28ea8a56..283205c3 100644
--- a/module/Core/config/dependencies.config.php
+++ b/module/Core/config/dependencies.config.php
@@ -5,8 +5,8 @@ namespace Shlinkio\Shlink\Core;
use Doctrine\Common\Cache\Cache;
use Psr\EventDispatcher\EventDispatcherInterface;
-use Shlinkio\Shlink\Common\Service\PreviewGenerator;
use Shlinkio\Shlink\Core\Response\NotFoundHandler;
+use Shlinkio\Shlink\PreviewGenerator\Service\PreviewGenerator;
use Zend\Expressive\Router\RouterInterface;
use Zend\Expressive\Template\TemplateRendererInterface;
use Zend\ServiceManager\AbstractFactory\ConfigAbstractFactory;
diff --git a/module/Core/src/Action/PreviewAction.php b/module/Core/src/Action/PreviewAction.php
index a86a3358..5ada47ec 100644
--- a/module/Core/src/Action/PreviewAction.php
+++ b/module/Core/src/Action/PreviewAction.php
@@ -11,11 +11,11 @@ use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
use Shlinkio\Shlink\Common\Exception\PreviewGenerationException;
use Shlinkio\Shlink\Common\Response\ResponseUtilsTrait;
-use Shlinkio\Shlink\Common\Service\PreviewGeneratorInterface;
use Shlinkio\Shlink\Core\Action\Util\ErrorResponseBuilderTrait;
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
use Shlinkio\Shlink\Core\Service\UrlShortenerInterface;
+use Shlinkio\Shlink\PreviewGenerator\Service\PreviewGeneratorInterface;
/** @deprecated */
class PreviewAction implements MiddlewareInterface
diff --git a/module/Core/test/Action/PreviewActionTest.php b/module/Core/test/Action/PreviewActionTest.php
index 3fba9948..f8f74d88 100644
--- a/module/Core/test/Action/PreviewActionTest.php
+++ b/module/Core/test/Action/PreviewActionTest.php
@@ -8,12 +8,12 @@ use PHPUnit\Framework\TestCase;
use Prophecy\Argument;
use Prophecy\Prophecy\ObjectProphecy;
use Psr\Http\Server\RequestHandlerInterface;
-use Shlinkio\Shlink\Common\Service\PreviewGenerator;
use Shlinkio\Shlink\Core\Action\PreviewAction;
use Shlinkio\Shlink\Core\Entity\ShortUrl;
use Shlinkio\Shlink\Core\Exception\EntityDoesNotExistException;
use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException;
use Shlinkio\Shlink\Core\Service\UrlShortener;
+use Shlinkio\Shlink\PreviewGenerator\Service\PreviewGenerator;
use ShlinkioTest\Shlink\Common\Util\TestUtils;
use Zend\Diactoros\Response;
use Zend\Diactoros\ServerRequest;
diff --git a/module/PreviewGenerator/config/dependencies.config.php b/module/PreviewGenerator/config/dependencies.config.php
new file mode 100644
index 00000000..03b92fc0
--- /dev/null
+++ b/module/PreviewGenerator/config/dependencies.config.php
@@ -0,0 +1,26 @@
+ [
+ 'factories' => [
+ Image\ImageBuilder::class => Image\ImageBuilderFactory::class,
+ Service\PreviewGenerator::class => ConfigAbstractFactory::class,
+ ],
+ ],
+
+ ConfigAbstractFactory::class => [
+ Service\PreviewGenerator::class => [
+ Image\ImageBuilder::class,
+ Filesystem::class,
+ 'config.preview_generation.files_location',
+ ],
+ ],
+
+];
diff --git a/module/PreviewGenerator/src/ConfigProvider.php b/module/PreviewGenerator/src/ConfigProvider.php
new file mode 100644
index 00000000..2a51f6c3
--- /dev/null
+++ b/module/PreviewGenerator/src/ConfigProvider.php
@@ -0,0 +1,15 @@
+configProvider = new ConfigProvider();
+ }
+
+ /** @test */
+ public function configIsReturned(): void
+ {
+ $config = ($this->configProvider)();
+
+ $this->assertArrayHasKey('dependencies', $config);
+ }
+}
diff --git a/module/Common/test/Image/ImageBuilderFactoryTest.php b/module/PreviewGenerator/test/Image/ImageBuilderFactoryTest.php
similarity index 74%
rename from module/Common/test/Image/ImageBuilderFactoryTest.php
rename to module/PreviewGenerator/test/Image/ImageBuilderFactoryTest.php
index 8a5aaab1..935e4526 100644
--- a/module/Common/test/Image/ImageBuilderFactoryTest.php
+++ b/module/PreviewGenerator/test/Image/ImageBuilderFactoryTest.php
@@ -1,11 +1,11 @@
./module/IpGeolocation/test
+
+ ./module/PreviewGenerator/test
+
@@ -32,6 +35,7 @@
./module/Core/src/Repository
+ ./module/TestUtils