jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/352716 )
Change subject: Assert valid transformations between formats in the http api
......................................................................
Assert valid transformations between formats in the http api
Change-Id: Ib3baa70d90b6554bebe857478b22d1f168b58ed6
---
M lib/api/routes.js
1 file changed, 16 insertions(+), 16 deletions(-)
Approvals:
Subramanya Sastry: Looks good to me, approved
jenkins-bot: Verified
diff --git a/lib/api/routes.js b/lib/api/routes.js
index 289f007..580a5ab 100644
--- a/lib/api/routes.js
+++ b/lib/api/routes.js
@@ -53,12 +53,20 @@
next();
};
- var supportedFormats = new Set(['pagebundle', 'html', 'wikitext']);
-
var errorEncoding = new Map(Object.entries({
'pagebundle': 'json',
'html': 'html',
'wikitext': 'plain',
+ }));
+
+ // NOTE: wt2wt here is not a transformation, it just fetches the page
+ // wikitext and is limited to GET requests. The endpoint is used in
+ // roundtrip testing.
+
+ var validTransforms = new Map(Object.entries({
+ 'wikitext': ['wikitext', 'html', 'pagebundle'],
+ 'html': ['wikitext'],
+ 'pagebundle': ['wikitext', 'pagebundle'],
}));
routes.v3Middle = function(req, res, next) {
@@ -79,15 +87,11 @@
format: req.params.format,
}, req.body);
- if (!supportedFormats.has(opts.format)) {
- res.locals.errorEnc = 'plain';
- return errOut(res, 'Invalid format: ' + opts.from +
'/to/' + opts.format);
- } else {
- res.locals.errorEnc = errorEncoding.get(opts.format);
- }
+ res.locals.errorEnc = errorEncoding.get(opts.format) || 'plain';
- if (!supportedFormats.has(opts.from)) {
- return errOut(res, 'Invalid format: ' + opts.from +
'/to/' + opts.format);
+ var transforms = validTransforms.get(opts.from);
+ if (transforms === undefined ||
!transforms.includes(opts.format)) {
+ return errOut(res, 'Invalid transform: ' + opts.from +
'/to/' + opts.format);
}
var iwp = parsoidConfig.reverseMwApiMap.get(req.params.domain);
@@ -774,7 +778,7 @@
var env = res.locals.env;
var p;
if (opts.from === 'wikitext') {
- // No use case for this yet
+ // No use case for this yet ... we only accept it with
GET above.
if (opts.format === 'wikitext') {
return apiUtils.fatalRequest(env, 'Invalid
format', 400);
}
@@ -792,7 +796,7 @@
return apiUtils.fatalRequest(env, 'No title or
wikitext was provided.', 400);
}
p = wt2html(req, res, wikitext);
- } else { // from html/pagebundle
+ } else { // from pagebundle
if (opts.format === 'wikitext') {
// html is required for serialization
if (opts.html === undefined) {
@@ -803,10 +807,6 @@
opts.html : (opts.html.body || '');
p = html2wt(req, res, html);
} else {
- // No use case for this yet
- if (opts.from === 'html' || opts.to === 'html')
{
- return apiUtils.fatalRequest(env,
'Invalid to or from', 400);
- }
p = pb2pb(req, res);
}
}
--
To view, visit https://gerrit.wikimedia.org/r/352716
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ib3baa70d90b6554bebe857478b22d1f168b58ed6
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <[email protected]>
Gerrit-Reviewer: Subramanya Sastry <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits