From 107faee6daad947db68443b32d02d4420c6d1592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Mon, 26 Sep 2016 18:57:16 +0000 Subject: [PATCH] ve.dm.MWMediaResourceProvider: Use mw.ForeignApi rather than JSONP Requires MediaWiki core change Ic93d733cb9e1b1d7301f8975c68ab7ded778845a. On wikis with CentralAuth installed, also requires I24c2819ec2adcab468f961c5c46b31c331324567 and I372e7bdff35400287b3d961da979d6f094d13bd9. Bug: T143279 Change-Id: Id60bb3cde7e2032846da9606aefb00ea805f2ecd --- .../models/ve.dm.MWMediaResourceProvider.js | 30 +++++-------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/modules/ve-mw/dm/models/ve.dm.MWMediaResourceProvider.js b/modules/ve-mw/dm/models/ve.dm.MWMediaResourceProvider.js index 8d24a320f1..7f37105cec 100644 --- a/modules/ve-mw/dm/models/ve.dm.MWMediaResourceProvider.js +++ b/modules/ve-mw/dm/models/ve.dm.MWMediaResourceProvider.js @@ -27,25 +27,13 @@ ve.dm.MWMediaResourceProvider = function VeDmMWMediaResourceProvider( apiurl, co this.isLocal = config.local !== undefined; if ( this.isLocal ) { - this.setAjaxSettings( { - url: mw.util.wikiScript( 'api' ), - // If the url is local use json - dataType: 'json' - } ); + this.setAPIurl( mw.util.wikiScript( 'api' ) ); } else { - this.setAjaxSettings( { - // If 'apiurl' is set, use that. Otherwise, build the url - // from scriptDirUrl and /api.php suffix - url: this.getAPIurl() || ( this.scriptDirUrl + '/api.php' ), - // If the url is not the same origin use jsonp - dataType: 'jsonp', - // JSON-P requests are not cached by default and get a &_=random trail. - // While setting cache=true will still bypass cache in most case due to the - // callback parameter, at least drop the &_=random trail which triggers - // an API warning (invalid parameter). - cache: true - } ); + // If 'apiurl' is set, use that. Otherwise, build the url + // from scriptDirUrl and /api.php suffix + this.setAPIurl( this.getAPIurl() || ( this.scriptDirUrl + '/api.php' ) ); } + this.siteInfoPromise = null; this.thumbSizes = []; this.imageSizes = []; @@ -180,17 +168,15 @@ ve.dm.MWMediaResourceProvider.prototype.sort = function ( results ) { * the fetched data. */ ve.dm.MWMediaResourceProvider.prototype.fetchAPIresults = function ( howMany ) { - var xhr, - ajaxOptions = {}, + var xhr, api, provider = this; if ( !this.isValid() ) { return $.Deferred().reject().promise( { abort: $.noop } ); } - ajaxOptions = this.getAjaxSettings(); - - xhr = new mw.Api().get( $.extend( {}, this.getStaticParams(), this.getUserParams(), this.getContinueData( howMany ) ), ajaxOptions ); + api = this.isLocal ? new mw.Api() : new mw.ForeignApi( this.getAPIurl(), { anonymous: true } ); + xhr = api.get( $.extend( {}, this.getStaticParams(), this.getUserParams(), this.getContinueData( howMany ) ) ); return xhr .then( function ( data ) { var page, newObj, raw,