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

Reply via email to