It was impossible to parse wikitext longer than the maximum URL length of about
2000 characters, because our library only used GET requests. This patch
switches to using POST for inline content, while still using GET when parsing
existing pages.
Bug: T216837
Change-Id: I971b7fc197517a2761f2100fc2aeda087ff52a78
if ( mw.Title && content instanceof mw.Title ) {
// Parse existing page
config.page = content.getPrefixedDb();
if ( mw.Title && content instanceof mw.Title ) {
// Parse existing page
config.page = content.getPrefixedDb();
+ apiPromise = this.get( config );
} else {
// Parse wikitext from input
config.text = String( content );
} else {
// Parse wikitext from input
config.text = String( content );
+ apiPromise = this.post( config );
- apiPromise = this.get( config );
-
return apiPromise
.then( function ( data ) {
return data.parse.text;
return apiPromise
.then( function ( data ) {
return data.parse.text;
} ) );
QUnit.test( '.parse( string )', function ( assert ) {
} ) );
QUnit.test( '.parse( string )', function ( assert ) {
- this.server.respondWith( /action=parse.*&text='''Hello(\+|%20)world'''/, [ 200,
+ this.server.respondWith( 'POST', /api.php/, [ 200,
{ 'Content-Type': 'application/json' },
'{ "parse": { "text": "<p><b>Hello world</b></p>" } }'
] );
{ 'Content-Type': 'application/json' },
'{ "parse": { "text": "<p><b>Hello world</b></p>" } }'
] );
} );
QUnit.test( '.parse( Object.toString )', function ( assert ) {
} );
QUnit.test( '.parse( Object.toString )', function ( assert ) {
- this.server.respondWith( /action=parse.*&text='''Hello(\+|%20)world'''/, [ 200,
+ this.server.respondWith( 'POST', /api.php/, [ 200,
{ 'Content-Type': 'application/json' },
'{ "parse": { "text": "<p><b>Hello world</b></p>" } }'
] );
{ 'Content-Type': 'application/json' },
'{ "parse": { "text": "<p><b>Hello world</b></p>" } }'
] );
} );
QUnit.test( '.parse( mw.Title )', function ( assert ) {
} );
QUnit.test( '.parse( mw.Title )', function ( assert ) {
- this.server.respondWith( /action=parse.*&page=Earth/, [ 200,
+ this.server.respondWith( 'GET', /action=parse.*&page=Earth/, [ 200,
{ 'Content-Type': 'application/json' },
'{ "parse": { "text": "<p><b>Earth</b> is a planet.</p>" } }'
] );
{ 'Content-Type': 'application/json' },
'{ "parse": { "text": "<p><b>Earth</b> is a planet.</p>" } }'
] );