dependencies.config.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. declare(strict_types=1);
  3. namespace Shlinkio\Shlink\CLI;
  4. use Doctrine\DBAL\Connection;
  5. use GeoIp2\Database\Reader;
  6. use Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory;
  7. use Laminas\ServiceManager\Factory\InvokableFactory;
  8. use Shlinkio\Shlink\Common\Doctrine\NoDbNameConnectionFactory;
  9. use Shlinkio\Shlink\Core\Domain\DomainService;
  10. use Shlinkio\Shlink\Core\Service;
  11. use Shlinkio\Shlink\Core\ShortUrl\Helper\ShortUrlStringifier;
  12. use Shlinkio\Shlink\Core\ShortUrl\Transformer\ShortUrlDataTransformer;
  13. use Shlinkio\Shlink\Core\Tag\TagService;
  14. use Shlinkio\Shlink\Core\Visit;
  15. use Shlinkio\Shlink\Installer\Factory\ProcessHelperFactory;
  16. use Shlinkio\Shlink\IpGeolocation\GeoLite2\DbUpdater;
  17. use Shlinkio\Shlink\IpGeolocation\Resolver\IpLocationResolverInterface;
  18. use Shlinkio\Shlink\Rest\Service\ApiKeyService;
  19. use Symfony\Component\Console as SymfonyCli;
  20. use Symfony\Component\Lock\LockFactory;
  21. use Symfony\Component\Process\PhpExecutableFinder;
  22. use const Shlinkio\Shlink\Core\LOCAL_LOCK_FACTORY;
  23. return [
  24. 'dependencies' => [
  25. 'factories' => [
  26. SymfonyCli\Application::class => Factory\ApplicationFactory::class,
  27. SymfonyCli\Helper\ProcessHelper::class => ProcessHelperFactory::class,
  28. PhpExecutableFinder::class => InvokableFactory::class,
  29. Util\GeolocationDbUpdater::class => ConfigAbstractFactory::class,
  30. Util\ProcessRunner::class => ConfigAbstractFactory::class,
  31. ApiKey\RoleResolver::class => ConfigAbstractFactory::class,
  32. Command\ShortUrl\GenerateShortUrlCommand::class => ConfigAbstractFactory::class,
  33. Command\ShortUrl\ResolveUrlCommand::class => ConfigAbstractFactory::class,
  34. Command\ShortUrl\ListShortUrlsCommand::class => ConfigAbstractFactory::class,
  35. Command\ShortUrl\GetVisitsCommand::class => ConfigAbstractFactory::class,
  36. Command\ShortUrl\DeleteShortUrlCommand::class => ConfigAbstractFactory::class,
  37. Command\Visit\LocateVisitsCommand::class => ConfigAbstractFactory::class,
  38. Command\Api\GenerateKeyCommand::class => ConfigAbstractFactory::class,
  39. Command\Api\DisableKeyCommand::class => ConfigAbstractFactory::class,
  40. Command\Api\ListKeysCommand::class => ConfigAbstractFactory::class,
  41. Command\Tag\ListTagsCommand::class => ConfigAbstractFactory::class,
  42. Command\Tag\CreateTagCommand::class => ConfigAbstractFactory::class,
  43. Command\Tag\RenameTagCommand::class => ConfigAbstractFactory::class,
  44. Command\Tag\DeleteTagsCommand::class => ConfigAbstractFactory::class,
  45. Command\Db\CreateDatabaseCommand::class => ConfigAbstractFactory::class,
  46. Command\Db\MigrateDatabaseCommand::class => ConfigAbstractFactory::class,
  47. Command\Domain\ListDomainsCommand::class => ConfigAbstractFactory::class,
  48. ],
  49. ],
  50. ConfigAbstractFactory::class => [
  51. Util\GeolocationDbUpdater::class => [DbUpdater::class, Reader::class, LOCAL_LOCK_FACTORY],
  52. Util\ProcessRunner::class => [SymfonyCli\Helper\ProcessHelper::class],
  53. ApiKey\RoleResolver::class => [DomainService::class],
  54. Command\ShortUrl\GenerateShortUrlCommand::class => [
  55. Service\UrlShortener::class,
  56. ShortUrlStringifier::class,
  57. 'config.url_shortener.default_short_codes_length',
  58. ],
  59. Command\ShortUrl\ResolveUrlCommand::class => [Service\ShortUrl\ShortUrlResolver::class],
  60. Command\ShortUrl\ListShortUrlsCommand::class => [
  61. Service\ShortUrlService::class,
  62. ShortUrlDataTransformer::class,
  63. ],
  64. Command\ShortUrl\GetVisitsCommand::class => [Visit\VisitsStatsHelper::class],
  65. Command\ShortUrl\DeleteShortUrlCommand::class => [Service\ShortUrl\DeleteShortUrlService::class],
  66. Command\Visit\LocateVisitsCommand::class => [
  67. Visit\VisitLocator::class,
  68. IpLocationResolverInterface::class,
  69. LockFactory::class,
  70. Util\GeolocationDbUpdater::class,
  71. ],
  72. Command\Api\GenerateKeyCommand::class => [ApiKeyService::class, ApiKey\RoleResolver::class],
  73. Command\Api\DisableKeyCommand::class => [ApiKeyService::class],
  74. Command\Api\ListKeysCommand::class => [ApiKeyService::class],
  75. Command\Tag\ListTagsCommand::class => [TagService::class],
  76. Command\Tag\CreateTagCommand::class => [TagService::class],
  77. Command\Tag\RenameTagCommand::class => [TagService::class],
  78. Command\Tag\DeleteTagsCommand::class => [TagService::class],
  79. Command\Domain\ListDomainsCommand::class => [DomainService::class],
  80. Command\Db\CreateDatabaseCommand::class => [
  81. LockFactory::class,
  82. Util\ProcessRunner::class,
  83. PhpExecutableFinder::class,
  84. Connection::class,
  85. NoDbNameConnectionFactory::SERVICE_NAME,
  86. ],
  87. Command\Db\MigrateDatabaseCommand::class => [
  88. LockFactory::class,
  89. Util\ProcessRunner::class,
  90. PhpExecutableFinder::class,
  91. ],
  92. ],
  93. ];