Nikerabbit has uploaded a new change for review. https://gerrit.wikimedia.org/r/114450
Change subject: Add PageLoaders ...................................................................... Add PageLoaders Examples: ParsoidPageLoader = require( './pageloader/ParsoidPageLoader' ).ParsoidPageLoader l = new ParsoidPageLoader( 'http://parsoid-lb.eqiad.wikimedia.org', 'enwiki' ); promise = l.load( 'Food' ) promise.then( function ( x ) { console.log( x ); } ); promise.done(); MediaWikiApiPageLoader = require( './pageloader/MediaWikiApiPageLoader' ).MediaWikiApiPageLoader l = new MediaWikiApiPageLoader( 'http://en.wikipedia.org/w/api.php' ); promise = l.load( 'Food' ) promise.then( function ( x ) { console.log( x ); } ); promise.done(); Change-Id: Iddc35275dbf71ecf549fb834528722242800ce96 --- M server/package.json A server/pageloader/MediaWikiApiPageLoader.js A server/pageloader/ParsoidPageLoader.js A server/pageloader/pageLoader.js 4 files changed, 123 insertions(+), 1 deletion(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ContentTranslation refs/changes/50/114450/1 diff --git a/server/package.json b/server/package.json index e88c7fb..2b3d551 100644 --- a/server/package.json +++ b/server/package.json @@ -3,7 +3,10 @@ "description": "Server for Content Translation", "version": "0.1.0", "dependencies": { - "express": "3.x" + "express": "3.x", + "q": "*", + "request": "*" + }, "devDependencies": { "colors": "~0.6.2", diff --git a/server/pageloader/MediaWikiApiPageLoader.js b/server/pageloader/MediaWikiApiPageLoader.js new file mode 100644 index 0000000..23a0c6f --- /dev/null +++ b/server/pageloader/MediaWikiApiPageLoader.js @@ -0,0 +1,48 @@ +/** + * Loads html for pages to translate via MediaWiki API + * + * @file + * @copyright See AUTHORS.txt + * @license GPL-2.0+ + */ + +'use strict'; + +var + request = require( 'request' ), + Q = require( 'q' ), + util = require( 'util' ), + PageLoader = require( __dirname + '/pageLoader.js' ).PageLoader; + +/** + * @class MediaWikiApiPageLoader + */ +function MediaWikiApiPageLoader( api ) { + PageLoader.call( this ); + this.api = api; +} + +util.inherits( MediaWikiApiPageLoader, PageLoader ); + +MediaWikiApiPageLoader.prototype.load = function ( documentId ) { + var deferred = Q.defer(); + + request( + this.api + '?action=parse&format=json&page=' + encodeURIComponent( documentId ), + function( error, response, body ) { + if ( error ) { + deferred.reject( error ); + } + + if ( response.statusCode !== 200 ) { + deferred.reject( response.statusCode ); + } + + deferred.resolve( JSON.parse( body ).parse.text['*'] ); + } + ); + + return deferred.promise; +} + +module.exports.MediaWikiApiPageLoader = MediaWikiApiPageLoader; diff --git a/server/pageloader/ParsoidPageLoader.js b/server/pageloader/ParsoidPageLoader.js new file mode 100644 index 0000000..906c89a --- /dev/null +++ b/server/pageloader/ParsoidPageLoader.js @@ -0,0 +1,49 @@ +/** + * Loads html for pages to translate form Parsoid service + * + * @file + * @copyright See AUTHORS.txt + * @license GPL-2.0+ + */ + +'use strict'; + +var + request = require( 'request' ), + Q = require( 'q' ), + util = require( 'util' ), + PageLoader = require( __dirname + '/pageLoader.js' ).PageLoader; + +/** + * @class ParsoidPageLoader + */ +function ParsoidPageLoader( host, wikiId ) { + PageLoader.call( this ); + this.host = host; + this.wikiId = wikiId; +} + +util.inherits( ParsoidPageLoader, PageLoader ); + +ParsoidPageLoader.prototype.load = function ( documentId ) { + var deferred = Q.defer(); + + request( + this.host + '/' + this.wikiId + '/' + documentId, + function( error, response, body ) { + if ( error ) { + deferred.reject( error ); + } + + if ( response.statusCode !== 200 ) { + deferred.reject( response.statusCode ); + } + + deferred.resolve( body ); + } + ); + + return deferred.promise; +} + +module.exports.ParsoidPageLoader = ParsoidPageLoader; diff --git a/server/pageloader/pageLoader.js b/server/pageloader/pageLoader.js new file mode 100644 index 0000000..addc203 --- /dev/null +++ b/server/pageloader/pageLoader.js @@ -0,0 +1,22 @@ +/** + * PageLoader interface + * + * @file + * @copyright See AUTHORS.txt + * @license GPL-2.0+ + */ + +'use strict'; + +/** + * @class PageLoader + */ +function PageLoader() {} + +/** + * @param {String} documentId Identifies the document to be translated. + * @return {Promise} + */ +PageLoader.prototype.load = function ( documentId ) {} + +module.exports.PageLoader = PageLoader; -- To view, visit https://gerrit.wikimedia.org/r/114450 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iddc35275dbf71ecf549fb834528722242800ce96 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/ContentTranslation Gerrit-Branch: master Gerrit-Owner: Nikerabbit <niklas.laxst...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits