Arlolra has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/164387

Change subject: Promisify the parserEnvMw middleware
......................................................................

Promisify the parserEnvMw middleware

Change-Id: I56c1b768a7194ab29f27c0752284ccead8ed85f7
---
M api/routes.js
1 file changed, 31 insertions(+), 27 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid 
refs/changes/87/164387/1

diff --git a/api/routes.js b/api/routes.js
index 93cd890..6e93062 100644
--- a/api/routes.js
+++ b/api/routes.js
@@ -16,7 +16,7 @@
 // relative includes
 var mp = '../lib/';
 
-var MWParserEnvironment = require( mp + 'mediawiki.parser.environment.js' 
).MWParserEnvironment,
+var MWParserEnv = require( mp + 'mediawiki.parser.environment.js' 
).MWParserEnvironment,
        WikitextSerializer = require( mp + 'mediawiki.WikitextSerializer.js' 
).WikitextSerializer,
        SelectiveSerializer = require( mp + 'mediawiki.SelectiveSerializer.js' 
).SelectiveSerializer,
        LogData = require( mp + 'LogData.js' ).LogData,
@@ -41,6 +41,25 @@
 
 function action( res ) {
        return [ "", res.local('iwp'), res.local('pageName') ].join( "/" );
+}
+
+function errBack( res, env, logData, callback ) {
+       try {
+               if ( !env.responseSent ) {
+                       apiUtils.setHeader( res, env, 'Content-Type', 
'text/plain; charset=UTF-8' );
+                       apiUtils.sendResponse( res, env, logData.fullMsg(), 
logData.code || 500 );
+                       if ( typeof callback === 'function' ) {
+                               res.on( 'finish', callback );
+                       }
+                       return;
+               }
+       } catch (e) {
+               console.log( e.stack || e );
+               res.end();
+       }
+       if ( typeof callback === 'function' ) {
+               callback();
+       }
 }
 
 var roundTripDiff = function( selser, req, res, env, document ) {
@@ -369,33 +388,18 @@
 };
 
 routes.parserEnvMw = function( req, res, next ) {
-       MWParserEnvironment.getParserEnv( parsoidConfig, null, 
res.local('iwp'), res.local('pageName'), req.headers.cookie, function ( err, 
env ) {
-               function errCB( res, env, logData, callback ) {
-                       try {
-                               if ( !env.responseSent ) {
-                                       apiUtils.setHeader(res, env, 
'Content-Type', 'text/plain; charset=UTF-8' );
-                                       apiUtils.sendResponse(res, env, 
logData.fullMsg(), logData.code || 500);
-                                       if ( typeof callback === 'function' ) {
-                                               res.on('finish', callback);
-                                       }
-                                       return;
-                               }
-                       } catch (e) {
-                               console.log( e.stack || e );
-                               res.end();
-                       }
-                       if ( typeof callback === 'function' ) {
-                               callback();
-                       }
-               }
-
-               if ( err ) {
-                       return errCB(res, {}, new LogData(null, "error", err));
-               }
-
-               env.logger.registerBackend(/fatal(\/.*)?/, errCB.bind(this, 
res, env));
-               res.local("env", env);
+       Promise.promisify( MWParserEnv.getParserEnv, false, MWParserEnv )(
+               parsoidConfig,
+               null,
+               res.local('iwp'),
+               res.local('pageName'),
+               req.headers.cookie
+       ).then(function( env ) {
+               env.logger.registerBackend(/fatal(\/.*)?/, errBack.bind(this, 
res, env));
+               res.local('env', env);
                next();
+       }).catch(function( err ) {
+               errBack( res, {}, new LogData(null, "error", err) );
        });
 };
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I56c1b768a7194ab29f27c0752284ccead8ed85f7
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <[email protected]>

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

Reply via email to