Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 73
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2/**
3 * WikiLambda Service Wiring
4 *
5 * @file
6 * @ingroup Extensions
7 * @copyright 2020– Abstract Wikipedia team; see AUTHORS.txt
8 * @license MIT
9 */
10
11namespace MediaWiki\Extension\WikiLambda;
12
13use GuzzleHttp\Client;
14use MediaWiki\Extension\WikiLambda\AbstractContent\AbstractWikiConfigProvider;
15use MediaWiki\Extension\WikiLambda\AbstractContent\AbstractWikiRequest;
16use MediaWiki\Extension\WikiLambda\Authorization\ZObjectAuthorization;
17use MediaWiki\Extension\WikiLambda\AWStorage\AWArticleStore;
18use MediaWiki\Extension\WikiLambda\AWStorage\AWFragmentStore;
19use MediaWiki\Extension\WikiLambda\Cache\MemcachedWrapper;
20use MediaWiki\Extension\WikiLambda\ClientStorage\WikifunctionsClientStore;
21use MediaWiki\Extension\WikiLambda\ClientStorage\WikifunctionsFragmentStore;
22use MediaWiki\Extension\WikiLambda\ClientStorage\WikifunctionsUsageStore;
23use MediaWiki\Extension\WikiLambda\Language\WikifunctionsLanguageFactory;
24use MediaWiki\Extension\WikiLambda\Renderer\WikifunctionsFragmentImageRenderer;
25use MediaWiki\Extension\WikiLambda\Renderer\WikifunctionsFragmentRenderer;
26use MediaWiki\Logger\LoggerFactory;
27use MediaWiki\MediaWikiServices;
28
29/**
30 * @codeCoverageIgnore
31 */
32return [
33    // For repo wikis
34
35    'WikiLambdaZObjectStore' => static function ( MediaWikiServices $services ): ZObjectStore {
36        return WikiLambdaServices::buildZObjectStore( $services );
37    },
38
39    'WikiLambdaZObjectAuthorization' => static function ( MediaWikiServices $services ): ZObjectAuthorization {
40        return new ZObjectAuthorization(
41            LoggerFactory::getInstance( 'WikiLambda' )
42        );
43    },
44
45    'WikiLambdaOrchestratorRequest' => static function ( MediaWikiServices $services ): OrchestratorRequest {
46            $config = $services->getConfigFactory()->makeConfig( 'WikiLambda' );
47            $host = $config->get( 'WikiLambdaOrchestratorLocation' );
48            $client = new Client( [ 'base_uri' => $host ] );
49            return new OrchestratorRequest( $services->getTracer(), $client );
50    },
51
52    // For both repo and client wikis
53
54    'WikiLambdaMemcachedWrapper' => static function ( MediaWikiServices $services ): MemcachedWrapper {
55        return WikiLambdaServices::buildMemcachedWrapper( $services );
56    },
57
58    'WikiLambdaPFragmentRenderer' => static function ( MediaWikiServices $services ): WikifunctionsFragmentRenderer {
59        $imageRenderer = new WikifunctionsFragmentImageRenderer(
60            LoggerFactory::getInstance( 'WikiLambda' ),
61            $services->getHttpRequestFactory(),
62            WikiLambdaServices::getMemcachedWrapper(),
63            $services->getBadFileLookup()
64        );
65        return new WikifunctionsFragmentRenderer(
66            LoggerFactory::getInstance( 'WikiLambda' ),
67            $services->getUserFactory(),
68            $services->getMainConfig(),
69            $imageRenderer
70        );
71    },
72
73    // For client wikis
74
75    'WikifunctionsClientStore' => static function ( MediaWikiServices $services ): WikifunctionsClientStore {
76        return new WikifunctionsClientStore();
77    },
78
79    'WikifunctionsFragmentStore' => static function ( MediaWikiServices $services ): WikifunctionsFragmentStore {
80        return WikiLambdaServices::buildWikifunctionsFragmentStore( $services );
81    },
82
83    // For cross-wiki Function-usage tracking (written by client wikis, read by the repo);
84    // lives on the shared x1 cluster via the 'virtual-wikifunctions-usage' virtual domain.
85
86    'WikifunctionsUsageStore' => static function ( MediaWikiServices $services ): WikifunctionsUsageStore {
87        return new WikifunctionsUsageStore(
88            $services->getConnectionProvider(),
89            $services->getMainWANObjectCache()
90        );
91    },
92
93    // For abstract mode
94
95    'AbstractWikiRequest' => static function ( MediaWikiServices $services ): AbstractWikiRequest {
96        return new AbstractWikiRequest(
97            $services->getMainConfig(),
98            $services->getHttpRequestFactory(),
99            WikiLambdaServices::getAWFragmentStore(),
100            WikiLambdaServices::getPFragmentRenderer()
101        );
102    },
103
104    // For abstract and abstract client mode
105
106    'AbstractWikiArticleStore' => static function ( MediaWikiServices $services ): AWArticleStore {
107        return WikiLambdaServices::buildAWArticleStore( $services );
108    },
109
110    'AbstractWikiFragmentStore' => static function ( MediaWikiServices $services ): AWFragmentStore {
111        return WikiLambdaServices::buildAWFragmentStore( $services );
112    },
113
114    'AbstractWikiConfigProvider' => static function ( MediaWikiServices $services ): AbstractWikiConfigProvider {
115        return new AbstractWikiConfigProvider();
116    },
117
118    // For all environments
119
120    'WikiLambdaMode' => static function ( MediaWikiServices $services ): WikiLambdaMode {
121        return new WikiLambdaMode( $services->getMainConfig() );
122    },
123
124    'WikifunctionsLanguageFactory' => static function ( MediaWikiServices $services ): WikifunctionsLanguageFactory {
125        return new WikifunctionsLanguageFactory(
126            $services->getLanguageFactory()
127        );
128    },
129
130    'WikiLambdaWikidataEntityLookup' => static function ( MediaWikiServices $services ): WikidataEntityLookup {
131        return new WikidataEntityLookup( $services->getLanguageFallback() );
132    }
133];