Nikerabbit has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/375788 )
Change subject: Updates for Request classes in preparation for
TemplateDataRequest
......................................................................
Updates for Request classes in preparation for TemplateDataRequest
Template data does not have `query` key. Abstracting that away.
Be defensive and check for unsupported query continuations.
Remove dummy constructor and use shorter `require` syntax.
Change-Id: I2e4b94c1d480c8874df8d114105e641fd1df51d1
---
M lib/mw/BatchedAPIRequest.js
M lib/mw/TitleInfoRequest.js
M lib/mw/TitlePairRequest.js
3 files changed, 43 insertions(+), 26 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/cxserver
refs/changes/88/375788/1
diff --git a/lib/mw/BatchedAPIRequest.js b/lib/mw/BatchedAPIRequest.js
index e2e5690..1f7b037 100644
--- a/lib/mw/BatchedAPIRequest.js
+++ b/lib/mw/BatchedAPIRequest.js
@@ -1,7 +1,7 @@
'use strict';
-const cxutil = require( '../util.js' ),
- MWApiRequest = require( './ApiRequest.js' );
+const cxutil = require( '../util' ),
+ MWApiRequest = require( './ApiRequest' );
/**
* MediaWiki API batch queue.
@@ -22,6 +22,17 @@
// Array of page titles queued to be looked up
this.queue = [];
this.dispatchTimer = null;
+ }
+
+ /**
+ * Process the response object into a format which has keys pages and
redirects.
+ *
+ * @method
+ * @param {Object} response The response object
+ * @return {Object}
+ */
+ processResponse( response ) {
+ return response;
}
/**
@@ -62,30 +73,32 @@
}
}
- processResult = cxutil.async( function*( data ) {
- var pageid, page, i, processedPage,
- pages = ( data.query && data.query.pages ) ||
data.pages,
- redirects,
- processed = {};
+ processResult = cxutil.async( function*( response ) {
+ let processed = {};
- redirects = ( data.query && data.query.redirects ) ||
{};
- if ( pages ) {
- for ( pageid in pages ) {
- page = pages[ pageid ];
- processedPage =
batchRequest.processPage( page, redirects );
- if ( processedPage !== undefined ) {
- processed[ page.title ] =
processedPage;
- }
- for ( i in redirects ) {
- // Locate the title in
redirects, if any.
- if ( redirects[ i ].to ===
page.title ) {
- processed[ redirects[ i
].from ] = processedPage;
- break;
- }
+ if ( response.continue ) {
+ throw new Error( 'MediaWiki API query
continuation is not implemented' );
+ }
+
+ const data = batchRequest.processResponse( response );
+ const pages = data.pages || [];
+ const redirects = data.redirects || {};
+
+ for ( let pageid in pages ) {
+ let page = pages[ pageid ];
+ let processedPage = batchRequest.processPage(
page, redirects );
+ if ( processedPage !== undefined ) {
+ processed[ page.title ] = processedPage;
+ }
+ for ( let i in redirects ) {
+ // Locate the title in redirects, if
any.
+ if ( redirects[ i ].to === page.title )
{
+ processed[ redirects[ i ].from
] = processedPage;
+ break;
}
}
- yield batchRequest.set( processed );
}
+ yield batchRequest.set( processed );
} );
queue = this.queue;
diff --git a/lib/mw/TitleInfoRequest.js b/lib/mw/TitleInfoRequest.js
index 242d4dc..ce711c4 100644
--- a/lib/mw/TitleInfoRequest.js
+++ b/lib/mw/TitleInfoRequest.js
@@ -1,11 +1,15 @@
'use strict';
-const BatchedAPIRequest = require( './BatchedAPIRequest.js' );
+const BatchedAPIRequest = require( './BatchedAPIRequest' );
/**
* Fetches information about titles in batches.
*/
class TitleInfoRequest extends BatchedAPIRequest {
+ processResponse( response ) {
+ return response.query;
+ }
+
processPage( page ) {
return page;
}
diff --git a/lib/mw/TitlePairRequest.js b/lib/mw/TitlePairRequest.js
index fcf5687..2b8f715 100644
--- a/lib/mw/TitlePairRequest.js
+++ b/lib/mw/TitlePairRequest.js
@@ -4,7 +4,7 @@
* ContentTranslation Title pair request
*
*/
-const BatchedAPIRequest = require( './BatchedAPIRequest.js' );
+const BatchedAPIRequest = require( './BatchedAPIRequest' );
/**
* Fetches information about title pairs in batches.
@@ -15,8 +15,8 @@
* @param {Object} config Configuration
*/
class TitlePairRequest extends BatchedAPIRequest {
- constructor( config ) {
- super( config );
+ processResponse( response ) {
+ return response.query;
}
processPage( page ) {
--
To view, visit https://gerrit.wikimedia.org/r/375788
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2e4b94c1d480c8874df8d114105e641fd1df51d1
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/cxserver
Gerrit-Branch: master
Gerrit-Owner: Nikerabbit <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits