diff options
Diffstat (limited to 'Echo/ServiceWiring.php')
-rw-r--r-- | Echo/ServiceWiring.php | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/Echo/ServiceWiring.php b/Echo/ServiceWiring.php new file mode 100644 index 00000000..62558f25 --- /dev/null +++ b/Echo/ServiceWiring.php @@ -0,0 +1,49 @@ +<?php + +use EchoPush\NotificationServiceClient; +use EchoPush\SubscriptionManager; +use MediaWiki\Logger\LoggerFactory; +use MediaWiki\MediaWikiServices; +use MediaWiki\Storage\NameTableStore; + +return [ + + 'EchoPushNotificationServiceClient' => function ( MediaWikiServices $services ): + NotificationServiceClient { + $echoConfig = $services->getConfigFactory()->makeConfig( 'Echo' ); + $httpRequestFactory = $services->getHttpRequestFactory(); + $url = $echoConfig->get( 'EchoPushServiceBaseUrl' ); + $client = new NotificationServiceClient( $httpRequestFactory, $url ); + $client->setLogger( LoggerFactory::getInstance( 'Echo' ) ); + return $client; + }, + + 'EchoPushSubscriptionManager' => function ( MediaWikiServices $services ): SubscriptionManager { + $echoConfig = $services->getConfigFactory()->makeConfig( 'Echo' ); + // Use shared DB/cluster for push subscriptions + $cluster = $echoConfig->get( 'EchoSharedTrackingCluster' ); + $database = $echoConfig->get( 'EchoSharedTrackingDB' ); + $loadBalancerFactory = $services->getDBLoadBalancerFactory(); + $loadBalancer = $cluster + ? $loadBalancerFactory->getExternalLB( $cluster ) + : $loadBalancerFactory->getMainLB( $database ); + $dbw = $loadBalancer->getLazyConnectionRef( DB_MASTER, [], $database ); + $dbr = $loadBalancer->getLazyConnectionRef( DB_REPLICA, [], $database ); + + $centralIdLookup = CentralIdLookup::factory(); + + $pushProviderStore = new NameTableStore( + $loadBalancer, + $services->getMainWANObjectCache(), + LoggerFactory::getInstance( 'Echo' ), + 'echo_push_provider', + 'epp_id', + 'epp_name', + null, + $database + ); + + return new SubscriptionManager( $dbw, $dbr, $centralIdLookup, $pushProviderStore ); + } + +]; |