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