point-tools/app/config/services.yml
2019-02-23 20:51:42 +03:00

200 lines
7.2 KiB
YAML

parameters:
services:
_defaults:
autowire: true
autoconfigure: true
public: false
Skobkin\Bundle\PointToolsBundle\:
resource: '../../src/Skobkin/Bundle/PointToolsBundle/*'
exclude: '../../src/Skobkin/Bundle/PointToolsBundle/{DataFixtures,DependencyInjection,DQL,DTO,Entity,Exception,Repository,Twig}'
# HTTP clients
# Default
GuzzleHttp\ClientInterface:
alias: app.http.point_client
# HTTP client for Telegram
app.http.telegram_client:
class: GuzzleHttp\Client
arguments: [{ timeout: 3.0 }]
tags:
- { name: csa_guzzle.client }
# HTTP client for Point API
app.http.point_client:
class: GuzzleHttp\Client
arguments: [ { base_uri: '%point_base_url%', timeout: 5.0 } ]
tags:
- { name: csa_guzzle.client }
# Point API clients
# User
Skobkin\Bundle\PointToolsBundle\Service\Api\UserApi:
tags:
- { name: monolog.logger, channel: point_user_api }
# Post
Skobkin\Bundle\PointToolsBundle\Service\Api\PostApi:
tags:
- { name: monolog.logger, channel: point_post_api }
# Point subscription manager
Skobkin\Bundle\PointToolsBundle\Service\SubscriptionsManager:
# TODO deal with autowire for EventDispatcherInterface
tags:
- { name: monolog.logger, channel: subscribers_update }
# Controllers
Skobkin\Bundle\PointToolsBundle\Controller\:
resource: '../../src/Skobkin/Bundle/PointToolsBundle/Controller'
public: true
tags: ['controller.service_arguments']
Skobkin\Bundle\PointToolsBundle\Controller\MainController:
arguments:
$appUserId: '%point_id%'
$appUserLogin: '%point_login%'
Skobkin\Bundle\PointToolsBundle\Controller\Api\CrawlerController:
arguments:
$crawlerToken: '%crawler_token%'
Skobkin\Bundle\PointToolsBundle\Controller\Telegram\WebHookController:
arguments:
$telegramToken: '%telegram_token%'
$debug: '%kernel.debug%'
# Console commands
# @todo https://github.com/symfony/symfony/blob/3.4/UPGRADE-3.4.md#httpkernel
# Subsribers update
Skobkin\Bundle\PointToolsBundle\Command\UpdateSubscriptionsCommand:
arguments:
$apiDelay: '%point_api_delay%'
$appUserId: '%point_id%'
tags:
- { name: console.command }
- { name: monolog.logger, channel: subscribers_update }
# Privacy update
Skobkin\Bundle\PointToolsBundle\Command\UpdateUsersPrivacyCommand:
arguments:
$apiDelay: '%point_api_delay%'
$appUserId: '%point_id%'
tags:
- { name: console.command }
- { name: monolog.logger, channel: privacy_update }
# Restore users removed by error
Skobkin\Bundle\PointToolsBundle\Command\RestoreRemovedUsersCommand:
arguments:
$apiDelay: '%point_api_delay%'
tags:
- { name: console.command }
# Webhook management
Skobkin\Bundle\PointToolsBundle\Command\TelegramWebHookCommand:
arguments:
$telegramToken: '%telegram_token%'
$telegramWebhookMaxConnections: '%telegram_max_connections%'
tags: [{ name: console.command }]
# Send message
Skobkin\Bundle\PointToolsBundle\Command\TelegramSendMessageCommand:
tags: [{ name: console.command }]
# WebSocket MQ processing
Skobkin\Bundle\PointToolsBundle\Command\ProcessWebsocketUpdatesCommand:
arguments:
$bsClient: '@leezy.pheanstalk.primary'
$bsTubeName: '%beanstalkd_ws_updates_tube%'
tags:
- { name: console.command }
# Entity repositories as services
# User
Skobkin\Bundle\PointToolsBundle\Repository\UserRepository:
factory: 'doctrine:getRepository'
arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\User']
# Subscription
Skobkin\Bundle\PointToolsBundle\Repository\SubscriptionRepository:
factory: 'doctrine:getRepository'
arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Subscription']
# Subscription record/event
Skobkin\Bundle\PointToolsBundle\Repository\SubscriptionEventRepository:
factory: 'doctrine:getRepository'
arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\SubscriptionEvent']
# Subscription record/event
Skobkin\Bundle\PointToolsBundle\Repository\UserRenameEventRepository:
factory: 'doctrine:getRepository'
arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\UserRenameEvent']
# Post repository
Skobkin\Bundle\PointToolsBundle\Repository\Blogs\PostRepository:
factory: 'doctrine:getRepository'
arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Post']
# Comment repository
Skobkin\Bundle\PointToolsBundle\Repository\Blogs\CommentRepository:
factory: 'doctrine:getRepository'
arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Comment']
# Tag repository
Skobkin\Bundle\PointToolsBundle\Repository\Blogs\TagRepository:
factory: 'doctrine:getRepository'
arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Tag']
# File repository
Skobkin\Bundle\PointToolsBundle\Repository\Blogs\FileRepository:
factory: 'doctrine:getRepository'
arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Blogs\File']
# Telegram Account repository
Skobkin\Bundle\PointToolsBundle\Repository\Telegram\AccountRepository:
factory: 'doctrine:getRepository'
arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Telegram\Account']
# Custom Markdown parser
app.point.markdown_parser:
class: Skobkin\Bundle\PointToolsBundle\Service\Markdown\PointParser
arguments: [[], '@router']
tags:
- { name: markdown.parser }
# Event listeners
# User name changed in Doctrine
Skobkin\Bundle\PointToolsBundle\EventListener\UsersUpdatedSubscriber:
tags:
- { name: doctrine.event_subscriber, connection: default }
# User renaming
Skobkin\Bundle\PointToolsBundle\EventListener\UsersRenamedListener:
tags:
- { name: kernel.event_listener, event: app.users.renamed }
# User subscribers updated
Skobkin\Bundle\PointToolsBundle\EventListener\UserSubscribersUpdatedListener:
tags:
- { name: kernel.event_listener, event: app.user.subscribers_updated }
# Twig extensions
Skobkin\Bundle\PointToolsBundle\Twig\PointUrlExtension:
arguments:
$pointDomain: '%point_domain%'
$pointScheme: '%point_scheme%'
$pointBaseUrl: '%point_base_url%'
# Telegram services
# Bot API client
unreal4u\TelegramAPI\TgLog:
arguments:
$client: '@app.http.telegram_client'
$botToken: '%telegram_token%'
# Logger API client
app.telegram.logger_client:
class: unreal4u\TelegramAPI\TgLog
arguments:
$botToken: '%telegram_token%'
$logger: null
$client: '@app.http.telegram_client'
# Private message processor
Skobkin\Bundle\PointToolsBundle\Service\Telegram\PrivateMessageProcessor:
arguments:
$appUserId: '%point_id%'