Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2/**
3 * Services for CirrusSearch extensions
4 */
5
6use CirrusSearch\CirrusSearch;
7use CirrusSearch\CirrusSearchHookRunner;
8use CirrusSearch\InterwikiResolver;
9use CirrusSearch\InterwikiResolverFactory;
10use CirrusSearch\Profile\SearchProfileServiceFactory;
11use CirrusSearch\Query\DeepcatFeature;
12use MediaWiki\MediaWikiServices;
13use MediaWiki\Sparql\SparqlClient;
14
15// PHP unit does not understand code coverage for this file
16// as the @covers annotation cannot cover a specific file
17// This is fully tested in ServiceWiringTest.php
18// @codeCoverageIgnoreStart
19
20return [
21    'CirrusSearch' => static function ( MediaWikiServices $services ): CirrusSearch {
22        return new CirrusSearch();
23    },
24
25    // SPARQL client for deep category search
26    'CirrusCategoriesClient' => static function ( MediaWikiServices $services ): SparqlClient {
27        $config = $services->getMainConfig();
28        $client = new SparqlClient( $config->get( 'CirrusSearchCategoryEndpoint' ),
29            $services->getHttpRequestFactory() );
30        $client->setTimeout( DeepcatFeature::TIMEOUT );
31        $client->setClientOptions( [
32            'userAgent' => DeepcatFeature::USER_AGENT,
33        ] );
34        return $client;
35    },
36    InterwikiResolverFactory::SERVICE => static function ( MediaWikiServices $services ): InterwikiResolverFactory {
37        return InterwikiResolverFactory::newFactory();
38    },
39    InterwikiResolver::SERVICE => static function ( MediaWikiServices $services ): InterwikiResolver {
40        $config = $services->getConfigFactory()
41            ->makeConfig( 'CirrusSearch' );
42        return $services
43            ->getService( InterwikiResolverFactory::SERVICE )
44            ->getResolver( $config );
45    },
46    SearchProfileServiceFactory::SERVICE_NAME => static function ( MediaWikiServices $services ): SearchProfileServiceFactory {
47        $config = $services->getConfigFactory()
48            ->makeConfig( 'CirrusSearch' );
49        return new SearchProfileServiceFactory( $services->getService( InterwikiResolver::SERVICE ),
50        /** @phan-suppress-next-line PhanTypeMismatchArgumentSuperType $config is actually a SearchConfig */
51            $config,
52            $services->getLocalServerObjectCache(),
53            new CirrusSearchHookRunner( $services->getHookContainer() ),
54            $services->getUserOptionsLookup(),
55            ExtensionRegistry::getInstance()
56        );
57    }
58];
59
60// @codeCoverageIgnoreEnd