jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/378008 )

Change subject: Have a default Site but allow total overriding.
......................................................................


Have a default Site but allow total overriding.

This also adds a named wikimedia specific site as would be
deployed at a later date.

Change-Id: Id0ecb48fe1ee6e7f9b819551d877a2787b12808c
---
M extension.json
M src/Remote/MediaWiki/SiteWiring.php
M src/ServiceWiring.php
M tests/phpunit/SpecialImportFileIntegrationTest.php
4 files changed, 94 insertions(+), 88 deletions(-)

Approvals:
  WMDE-Fisch: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/extension.json b/extension.json
index fc39999..941701b 100644
--- a/extension.json
+++ b/extension.json
@@ -83,9 +83,7 @@
        "config": {
                "FileImporterRequiredRight": "upload",
                "FileImporterInBeta": true,
-               "FileImporterSourceSiteServices": [
-                       "FileImporterSitesTableMediaWikiSite"
-               ],
+               "FileImporterSourceSiteServices": [],
                "FileImporterTextPotentialProblems": [],
                "FileImporterTextReplacements": []
        },
diff --git a/src/Remote/MediaWiki/SiteWiring.php 
b/src/Remote/MediaWiki/SiteWiring.php
index 382b450..f90ec49 100644
--- a/src/Remote/MediaWiki/SiteWiring.php
+++ b/src/Remote/MediaWiki/SiteWiring.php
@@ -2,17 +2,10 @@
 
 namespace FileImporter;
 
-use FileImporter\Remote\MediaWiki\AnyMediaWikiFileUrlChecker;
-use FileImporter\Remote\MediaWiki\SiteTableSiteLookup;
-use FileImporter\Remote\MediaWiki\SiteTableSourceUrlChecker;
-use FileImporter\Services\Http\HttpRequestExecutor;
-use FileImporter\Services\SourceSite;
 use MediaWiki\Logger\LoggerFactory;
 use MediaWiki\MediaWikiServices;
 
 return [
-
-       // General services
 
        'FileImporterMediaWikiHttpApiLookup' => function ( MediaWikiServices 
$services ) {
                /** @var \FileImporter\Services\Http\HttpRequestExecutor 
$httpRequestExecutor */
@@ -28,73 +21,5 @@
        'FileImporterMediaWikiSiteTableSiteLookup' => function ( 
MediaWikiServices $services ) {
                return new Remote\MediaWiki\SiteTableSiteLookup( 
$services->getSiteLookup() );
        },
-
-       // SourceSite services
-
-       /**
-        * This SourceSite service allows importing from remote MediaWiki sites 
that are defined
-        * in the local wikis sites table.
-        */
-       'FileImporterSitesTableMediaWikiSite' => function ( MediaWikiServices 
$services ) {
-               /**
-                * @var SiteTableSiteLookup $siteTableLookup
-                * @var \FileImporter\Remote\MediaWiki\HttpApiLookup 
$httpApiLookup
-                * @var \FileImporter\Services\Http\HttpRequestExecutor 
$httpRequestExecutor
-                */
-               $siteTableLookup = $services->getService( 
'FileImporterMediaWikiSiteTableSiteLookup' );
-               $httpApiLookup = $services->getService( 
'FileImporterMediaWikiHttpApiLookup' );
-               $httpRequestExecutor = $services->getService( 
'FileImporterHttpRequestExecutor' );
-
-               $detailRetriever = new Remote\MediaWiki\ApiDetailRetriever(
-                       $httpApiLookup,
-                       $httpRequestExecutor
-               );
-               $detailRetriever->setLogger( LoggerFactory::getInstance( 
'FileImporter' ) );
-
-               // TODO SiteTableSourceUrlChecker here should have a logger....
-               // TODO ApiImportTitleChecker here should have a logger....
-
-               $site = new SourceSite(
-                       new SiteTableSourceUrlChecker( $siteTableLookup ),
-                       $detailRetriever,
-                       new Remote\MediaWiki\RemoteApiImportTitleChecker(
-                               $httpApiLookup,
-                               $httpRequestExecutor
-                       )
-               );
-
-               return $site;
-       },
-
-       /**
-        * This SourceSite service allows importing from any remote MediaWiki 
site.
-        */
-       'FileImporterAnyMediaWikiSite' => function ( MediaWikiServices 
$services ) {
-               /**
-                * @var \FileImporter\Remote\MediaWiki\HttpApiLookup 
$httpApiLookup
-                * @var HttpRequestExecutor $httpRequestExecutor
-                */
-               $httpApiLookup = $services->getService( 
'FileImporterMediaWikiHttpApiLookup' );
-               $httpRequestExecutor = $services->getService( 
'FileImporterHttpRequestExecutor' );
-
-               $detailRetriever = new Remote\MediaWiki\ApiDetailRetriever(
-                       $httpApiLookup,
-                       $httpRequestExecutor
-               );
-               $detailRetriever->setLogger( LoggerFactory::getInstance( 
'FileImporter' ) );
-
-               // TODO ApiImportTitleChecker here should have a logger....
-
-               $site = new SourceSite(
-                       new AnyMediaWikiFileUrlChecker(),
-                       $detailRetriever,
-                       new Remote\MediaWiki\RemoteApiImportTitleChecker(
-                               $httpApiLookup,
-                               $httpRequestExecutor
-                       )
-               );
-
-               return $site;
-       }
 
 ];
diff --git a/src/ServiceWiring.php b/src/ServiceWiring.php
index 6910d24..8977f74 100644
--- a/src/ServiceWiring.php
+++ b/src/ServiceWiring.php
@@ -2,11 +2,15 @@
 
 namespace FileImporter;
 
+use FileImporter\Remote\MediaWiki\AnyMediaWikiFileUrlChecker;
+use FileImporter\Remote\MediaWiki\SiteTableSiteLookup;
+use FileImporter\Remote\MediaWiki\SiteTableSourceUrlChecker;
 use FileImporter\Services\DuplicateFileRevisionChecker;
 use FileImporter\Services\Http\HttpRequestExecutor;
 use FileImporter\Services\Importer;
 use FileImporter\Services\ImportPlanFactory;
 use FileImporter\Services\NullRevisionCreator;
+use FileImporter\Services\SourceSite;
 use FileImporter\Services\SourceSiteLocator;
 use FileImporter\Services\UploadBase\UploadBaseFactory;
 use FileImporter\Services\WikiRevisionFactory;
@@ -19,10 +23,15 @@
 
        'FileImporterSourceSiteLocator' => function ( MediaWikiServices 
$services ) {
                $config = $services->getMainConfig();
-
+               $sourceSiteServices = $config->get( 
'FileImporterSourceSiteServices' );
                $sourceSites = [];
-               foreach ( $config->get( 'FileImporterSourceSiteServices' ) as 
$serviceName ) {
-                       $sourceSites[] = $services->getService( $serviceName );
+
+               if ( !empty( $sourceSiteServices ) ) {
+                       foreach ( $sourceSiteServices as $serviceName ) {
+                               $sourceSites[] = $services->getService( 
$serviceName );
+                       }
+               } else {
+                       $sourceSites[] = $services->getService( 
'FileImporter-Site-DefaultMediaWiki' );
                }
 
                return new SourceSiteLocator( $sourceSites );
@@ -90,4 +99,71 @@
                return new UploadBaseFactory( LoggerFactory::getInstance( 
'FileImporter' ) );
        },
 
+       // Sites
+
+       /**
+        * This configuration example can be used for development and is very 
plain and lenient!
+        * It will allow importing files form ANY mediawiki site.
+        */
+       'FileImporter-Site-DefaultMediaWiki' => function ( MediaWikiServices 
$services ) {
+               /**
+                * @var \FileImporter\Remote\MediaWiki\HttpApiLookup 
$httpApiLookup
+                * @var HttpRequestExecutor $httpRequestExecutor
+                */
+               $httpApiLookup = $services->getService( 
'FileImporterMediaWikiHttpApiLookup' );
+               $httpRequestExecutor = $services->getService( 
'FileImporterHttpRequestExecutor' );
+
+               $detailRetriever = new Remote\MediaWiki\ApiDetailRetriever(
+                       $httpApiLookup, $httpRequestExecutor
+               );
+               $detailRetriever->setLogger( LoggerFactory::getInstance( 
'FileImporter' ) );
+
+               // TODO ApiImportTitleChecker here should have a logger....
+
+               $site = new SourceSite(
+                       new AnyMediaWikiFileUrlChecker(),
+                       $detailRetriever,
+                       new Remote\MediaWiki\RemoteApiImportTitleChecker(
+                               $httpApiLookup, $httpRequestExecutor
+                       )
+               );
+
+               return $site;
+       },
+
+       /**
+        * This configuration example is setup to handle the wikimedia style 
setup.
+        * This only allows importing files from sites in the sites table.
+        * TODO move files on disk not over http
+        * TODO normalize domains such as en.m.wikipedia.org
+        */
+       'FileImporter-WikimediaSitesTableSite' => function ( MediaWikiServices 
$services ) {
+               /**
+                * @var SiteTableSiteLookup $siteTableLookup
+                * @var \FileImporter\Remote\MediaWiki\HttpApiLookup 
$httpApiLookup
+                * @var \FileImporter\Services\Http\HttpRequestExecutor 
$httpRequestExecutor
+                */
+               $siteTableLookup = $services->getService( 
'FileImporterMediaWikiSiteTableSiteLookup' );
+               $httpApiLookup = $services->getService( 
'FileImporterMediaWikiHttpApiLookup' );
+               $httpRequestExecutor = $services->getService( 
'FileImporterHttpRequestExecutor' );
+
+               $detailRetriever = new Remote\MediaWiki\ApiDetailRetriever(
+                       $httpApiLookup, $httpRequestExecutor
+               );
+               $detailRetriever->setLogger( LoggerFactory::getInstance( 
'FileImporter' ) );
+
+               // TODO SiteTableSourceUrlChecker here should have a logger....
+               // TODO ApiImportTitleChecker here should have a logger....
+
+               $site = new SourceSite(
+                       new SiteTableSourceUrlChecker( $siteTableLookup ),
+                       $detailRetriever,
+                       new Remote\MediaWiki\RemoteApiImportTitleChecker(
+                               $httpApiLookup, $httpRequestExecutor
+                       )
+               );
+
+               return $site;
+       },
+
 ];
diff --git a/tests/phpunit/SpecialImportFileIntegrationTest.php 
b/tests/phpunit/SpecialImportFileIntegrationTest.php
index c77a02b..8354fbd 100644
--- a/tests/phpunit/SpecialImportFileIntegrationTest.php
+++ b/tests/phpunit/SpecialImportFileIntegrationTest.php
@@ -40,12 +40,6 @@
 
                $this->setMwGlobals( 'wgEnableUploads', true );
 
-               // Test the special page with a default config
-               $this->setMwGlobals(
-                       'wgFileImporterSourceSiteServices',
-                               [ 'FileImporterSitesTableMediaWikiSite' ]
-               );
-
                $commonsSite = $this->getMockSite( 'commonswiki', 
'commons.wikimedia.org' );
                $hashSiteStore = new HashSiteStore( [ $commonsSite ] );
                $siteTableSiteLookup = new SiteTableSiteLookup( $hashSiteStore 
);
@@ -105,7 +99,8 @@
                                function ( $html ) {
                                        $this->assertInitialInputFormPreset( 
$html );
                                        $this->assertWarningBox( $html, 'Can\'t 
import the given URL' );
-                               }
+                               },
+                               [ 'FileImporter-WikimediaSitesTableSite' ]
                        ],
                        'Bad domain (malformed?)' => [
                                new FauxRequest( [
@@ -131,6 +126,7 @@
                                                'File not found: 
https://commons.wikimedia.org/wiki/ThisIsNotAFileFooBarBarBar'
                                        );
                                },
+                               [],
                                true
                        ],
                        'Good file' => [
@@ -151,6 +147,7 @@
                                                'Chicken In Snow.JPG'
                                        );
                                },
+                               [],
                                true
                        ],
                        'Good file & Good target title' => [
@@ -173,6 +170,7 @@
                                                'Chicken In Snow CHANGED.JPG'
                                        );
                                },
+                               [],
                                true
                        ],
                ];
@@ -266,11 +264,20 @@
                $userOrBool,
                $expectedExceptionDetails = null,
                $htmlAssertionCallable,
+               $sourceSiteServicesOverride = [],
                $requiresAccessToCommons = false
        ) {
                if ( $requiresAccessToCommons && !self::$hasAccessToCommons ) {
                        $this->markTestSkipped( 'This test requires http access 
to https://commons.wikimedia.org' );
                }
+
+               if ( !empty( $sourceSiteServicesOverride ) ) {
+                       $this->setMwGlobals(
+                               'wgFileImporterSourceSiteServices',
+                               $sourceSiteServicesOverride
+                       );
+               }
+
                if ( $expectedExceptionDetails ) {
                        $this->setExpectedException(
                                $expectedExceptionDetails['name'],

-- 
To view, visit https://gerrit.wikimedia.org/r/378008
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Id0ecb48fe1ee6e7f9b819551d877a2787b12808c
Gerrit-PatchSet: 7
Gerrit-Project: mediawiki/extensions/FileImporter
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>
Gerrit-Reviewer: Andrew-WMDE <[email protected]>
Gerrit-Reviewer: Tobias Gritschacher <[email protected]>
Gerrit-Reviewer: WMDE-Fisch <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to