Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
SiteTableSourceUrlChecker
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
2 / 2
4
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 checkSourceUrl
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3namespace FileImporter\Remote\MediaWiki;
4
5use FileImporter\Data\SourceUrl;
6use FileImporter\Interfaces\SourceUrlChecker;
7use Psr\Log\LoggerInterface;
8use Psr\Log\NullLogger;
9
10/**
11 * This SourceUrlChecker implementation will allow files from mediawiki websites that are contained
12 * in the sites table.
13 *
14 * @license GPL-2.0-or-later
15 * @author Addshore
16 */
17class SiteTableSourceUrlChecker implements SourceUrlChecker {
18    use MediaWikiSourceUrlParser;
19
20    /** @var SiteTableSiteLookup */
21    private $siteTableSiteLookup;
22    /** @var LoggerInterface */
23    private $logger;
24
25    public function __construct(
26        SiteTableSiteLookup $siteTableSiteLookup,
27        LoggerInterface $logger = null
28    ) {
29        $this->siteTableSiteLookup = $siteTableSiteLookup;
30        $this->logger = $logger ?? new NullLogger();
31    }
32
33    /**
34     * @inheritDoc
35     */
36    public function checkSourceUrl( SourceUrl $sourceUrl ): bool {
37        $site = $this->siteTableSiteLookup->getSite( $sourceUrl );
38
39        if ( !$site ) {
40            $this->logger->error( __METHOD__ . ' failed site check for URL: ' . $sourceUrl->getUrl() );
41            return false;
42        }
43
44        if ( $this->parseTitleFromSourceUrl( $sourceUrl ) === null ) {
45            $this->logger->error( __METHOD__ . ' failed title check for URL: ' . $sourceUrl->getUrl() );
46            return false;
47        }
48
49        return true;
50    }
51
52}