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

Reply via email to