Mholloway has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/386397 )
Change subject: Augment MCS summary 2.0 responses with all existing summary
fields
......................................................................
Augment MCS summary 2.0 responses with all existing summary fields
Bug: T178333
Change-Id: Ia8d3b03d22ef6acf31c247dc6fa1a2a02db5c6e6
---
M lib/mwapi.js
M routes/mobile-sections.js
M
test/diff/results/page_formatted-enwiki-User%3ABSitzmann_(WMF)_MCS_Test_Frankenstein.json
M
test/diff/results/page_formatted-enwiki-User%3ABSitzmann_(WMF)_MCS_Test_TitleLinkEncoding.json
M
test/diff/results/page_mobile-sections-enwiki-User%3ABSitzmann_(WMF)_MCS_Test_Frankenstein.json
M
test/diff/results/page_mobile-sections-enwiki-User%3ABSitzmann_(WMF)_MCS_Test_TitleLinkEncoding.json
M test/lib/mwapi/image-test.js
7 files changed, 74 insertions(+), 1 deletion(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/mobileapps
refs/changes/97/386397/1
diff --git a/lib/mwapi.js b/lib/mwapi.js
index 02993d4..8601873 100644
--- a/lib/mwapi.js
+++ b/lib/mwapi.js
@@ -163,6 +163,7 @@
action: 'query',
lllimit: 'max',
pilicense: 'any',
+ piprop: 'thumbnail|original|name',
pithumbsize: mwapi.LEAD_IMAGE_XL,
pageprops: ['wikibase_item',
'disambiguation', 'displaytitle', 'normalizedtitle'].join('|'),
@@ -230,10 +231,14 @@
pageprops,
image,
id: page.pageid,
+ dir: page.pagelanguagedir,
+ lang: page.pagelanguagehtmlcode,
languagecount: page.langlinks ? page.langlinks.length : 0,
lastmodified: revision && revision.timestamp,
lastmodifier: modifier,
thumb,
+ thumbnail: page.thumbnail,
+ originalimage: page.original,
ns: page.ns,
protection,
editable: !protection.edit,
@@ -319,6 +324,14 @@
return api.mwApiGet(app, req.params.domain, query);
};
+mwapi.scaledThumbObj = function(thumb, originalWidth, desiredWidth) {
+ const source = mwapi.scaledImageUrl(thumb.source, desiredWidth);
+ const match = mwapi.WIDTH_IN_IMAGE_URL_REGEX.exec(source);
+ const width = match ? parseInt(match[1], 10) : originalWidth;
+ const height = Math.round(width * thumb.height / thumb.width);
+ return { source, width, height };
+};
+
/**
* Scales a single image thumbnail URL to another size, if possible.
* @param {!string} initialUrl the initial URL for an image
diff --git a/routes/mobile-sections.js b/routes/mobile-sections.js
index f863f7d..d9e018f 100644
--- a/routes/mobile-sections.js
+++ b/routes/mobile-sections.js
@@ -93,11 +93,17 @@
let text;
let disambiguation;
let contentmodel;
+ let thumbnail;
if (input.meta.contentmodel !== 'wikitext') {
contentmodel = input.meta.contentmodel;
}
if (input.meta.pageprops && input.meta.pageprops.disambiguation !==
undefined) {
disambiguation = true;
+ }
+ if (input.meta.thumbnail) {
+ const scaledThumb = mwapi.scaledThumbObj(input.meta.thumbnail,
+ input.meta.originalimage.width, mwapi.LEAD_IMAGE_S);
+ thumbnail = Object.assign(input.meta.thumbnail, scaledThumb);
}
if (!legacy && !input.meta.mainpage) {
@@ -137,11 +143,15 @@
protection: input.meta.protection,
editable: input.meta.editable,
mainpage: input.meta.mainpage,
+ dir: input.meta.dir,
+ lang: input.meta.lang,
languagecount: input.meta.languagecount,
image: mUtil.defaultVal(mUtil.filterEmpty({
file: input.meta.image && input.meta.image.file,
urls: input.meta.thumb &&
mwapi.buildLeadImageUrls(input.meta.thumb.url)
})),
+ thumbnail,
+ originalimage: input.meta.originalimage,
pronunciation: input.page.pronunciation,
spoken: input.page.spoken,
hatnotes,
@@ -394,7 +404,16 @@
return Object.assign({
code,
type,
- revision: lead.revision
+ title: lead.normalizedtitle,
+ displaytitle: lead.displaytitle,
+ pageid: lead.id,
+ thumbnail: lead.thumbnail,
+ originalimage: lead.originalimage,
+ lang: lead.lang,
+ dir: lead.dir,
+ revision: lead.revision,
+ timestamp: lead.lastmodified,
+ description: lead.description
}, summary);
});
}
diff --git
"a/test/diff/results/page_formatted-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_Frankenstein.json"
"b/test/diff/results/page_formatted-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_Frankenstein.json"
index 36adda1..2a1e9c4 100644
---
"a/test/diff/results/page_formatted-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_Frankenstein.json"
+++
"b/test/diff/results/page_formatted-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_Frankenstein.json"
@@ -14,6 +14,8 @@
]
},
"editable": false,
+ "dir": "ltr",
+ "lang": "en",
"hatnotes": [],
"intro": "<p><b>Frankenstein Castle</b> is a medieval fortification on a
<a href=\"./Spur_castle\" title=\"Spur castle\">spur</a> above the village of
<a href=\"./Frankenstein,_Rhineland-Palatinate\" title=\"Frankenstein,
Rhineland-Palatinate\">Frankenstein, Rhineland-Palatinate</a> in the <a
href=\"./Palatinate_Forest\" title=\"Palatinate Forest\">Palatinate Forest</a>
in <a href=\"./Germany\" title=\"Germany\">Germany</a>. Its name derives from
the local House of Frankenstein.</p>",
"geo": {
diff --git
"a/test/diff/results/page_formatted-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_TitleLinkEncoding.json"
"b/test/diff/results/page_formatted-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_TitleLinkEncoding.json"
index 9debcfd..93d06ee 100644
---
"a/test/diff/results/page_formatted-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_TitleLinkEncoding.json"
+++
"b/test/diff/results/page_formatted-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_TitleLinkEncoding.json"
@@ -7,6 +7,8 @@
"normalizedtitle": "User:BSitzmann (WMF)/MCS/Test/TitleLinkEncoding",
"protection": {},
"editable": true,
+ "dir": "ltr",
+ "lang": "en",
"hatnotes": [],
"intro": "<p>Some tests for <a rel=\"mw:ExtLink\"
href=\"https://phabricator.wikimedia.org/T136346\">T136346: Links with plus
signs are not urlencoded</a>:</p><ul><li> <a
href=\"./User:BSitzmann_(WMF)/MCS/Test/TitleLinkEncoding#Pushed_to_browser\">#Pushed
to browser</a></li>\n<li> <a
href=\"./User:BSitzmann_(WMF)/MCS/Test/TitleLinkEncoding#Special_chars_.24.25.26\">#Special
chars $%&</a></li>\n<li> <a
href=\"./User:BSitzmann_(WMF)/MCS/Test/TitleLinkEncoding#Special_chars_.24.25.26\"
title=\"User:BSitzmann (WMF)/MCS/Test/TitleLinkEncoding\">User:BSitzmann
(WMF)/MCS/Test/TitleLinkEncoding#Special chars $%&</a></li>\n<li> <a
href=\"./User:BSitzmann_(WMF)/MCS/Test/Lead_paragraph_move\"
title=\"User:BSitzmann (WMF)/MCS/Test/Lead paragraph move\">User:BSitzmann
(WMF)/MCS/Test/Lead paragraph move</a></li>\n<li> <a href=\"./Cation\"
title=\"Cation\" class=\"mw-redirect\">Cation</a></li>\n<li> <a
href=\"./Ion#Anions_and_cations\"
title=\"Ion\">Ion#Anions_and_cations</a></li>\n<li> <a href=\"./Sort_(C++)\"
title=\"Sort (C++)\">Sort (C++)</a></li>\n<li> <a href=\"./&\"
title=\"&\" class=\"mw-redirect\">&</a></li>\n<li> <a href=\"./100%25\"
title=\"100%\">100%</a></li>\n<li> <a href=\"./File:CSA-T4-$50-1861.jpg\"
title=\"File:CSA-T4-$50-1861.jpg\">File:CSA-T4-$50-1861.jpg</a></li>\n<li> A
reference with an internal link<span class=\"mw-ref\" id=\"cite_ref-1\"><a
href=\"./User:BSitzmann_(WMF)/MCS/Test/TitleLinkEncoding#cite_note-1\"
style=\"counter-reset: mw-Ref 1;\"><span
class=\"mw-reflink-text\">[1]</span></a></span></li>\n<li> <span
class=\"new\">TitleStart %!\"$&'()*,-.0-9:;=?@A-Z^_`a-z~+
titleEnd#FragmentStart_!$&'()*+,;=-._~:@/?abc0123456789_FragmentEnd
</span></li></ul>",
"text": ""
diff --git
"a/test/diff/results/page_mobile-sections-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_Frankenstein.json"
"b/test/diff/results/page_mobile-sections-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_Frankenstein.json"
index 8a2e00f..ed91a59 100644
---
"a/test/diff/results/page_mobile-sections-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_Frankenstein.json"
+++
"b/test/diff/results/page_mobile-sections-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_Frankenstein.json"
@@ -14,6 +14,8 @@
]
},
"editable": false,
+ "dir": "ltr",
+ "lang": "en",
"hatnotes": [],
"geo": {
"latitude": 49.4388,
diff --git
"a/test/diff/results/page_mobile-sections-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_TitleLinkEncoding.json"
"b/test/diff/results/page_mobile-sections-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_TitleLinkEncoding.json"
index fbacf44..52bff51 100644
---
"a/test/diff/results/page_mobile-sections-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_TitleLinkEncoding.json"
+++
"b/test/diff/results/page_mobile-sections-enwiki-User%3ABSitzmann_\050WMF\051_MCS_Test_TitleLinkEncoding.json"
@@ -7,6 +7,8 @@
"normalizedtitle": "User:BSitzmann (WMF)/MCS/Test/TitleLinkEncoding",
"protection": {},
"editable": true,
+ "dir": "ltr",
+ "lang": "en",
"hatnotes": [],
"sections": [
{
diff --git a/test/lib/mwapi/image-test.js b/test/lib/mwapi/image-test.js
index 774f281..0a3c90f 100644
--- a/test/lib/mwapi/image-test.js
+++ b/test/lib/mwapi/image-test.js
@@ -3,6 +3,7 @@
const assert = require('../../utils/assert.js');
const buildUrls = require('../../../lib/mwapi').buildLeadImageUrls;
const scale = require('../../../lib/mwapi').scaledImageUrl;
+const scaledObj = require('../../../lib/mwapi').scaledThumbObj;
const path = '//upload.wikimedia.org/wikipedia/commons/thumb/a/a0';
const httpPath = 'http://upload.wikimedia.org/wikipedia/commons/thumb/a/a0';
@@ -19,6 +20,38 @@
`${prefix}/9/96/Vasskertentrance.jpg`);
});
+ it('thumb objects are scaled if the original image is scalable', () => {
+ const prefix = 'https://upload.wikimedia.org/wikipedia/commons';
+ const initialHasWidth = {
+ source:
`${prefix}/thumb/0/0b/Cat_poster_1.jpg/1280px-Cat_poster_1.jpg`,
+ width: 1280,
+ height: 840
+ };
+ const initialNoWidth = {
+ source:
"https://upload.wikimedia.org/wikipedia/commons/9/96/Vasskertentrance.jpg",
+ width: 800,
+ height: 533
+ };
+ assert.deepEqual(scaledObj(initialHasWidth, 5935, 320),
+ {
+ source:
`${prefix}/thumb/0/0b/Cat_poster_1.jpg/320px-Cat_poster_1.jpg`,
+ width: 320,
+ height: 210
+ });
+ assert.deepEqual(scaledObj(initialHasWidth, 5935, 1600),
+ {
+ source:
`${prefix}/thumb/0/0b/Cat_poster_1.jpg/1280px-Cat_poster_1.jpg`,
+ width: 1280,
+ height: 840
+ });
+ assert.deepEqual(scaledObj(initialNoWidth, 800, 320),
+ {
+ source: `${prefix}/9/96/Vasskertentrance.jpg`,
+ width: 800,
+ height: 533
+ });
+ });
+
it('buildLeadImageUrls("a") should return all "a"s', () => {
assert.deepEqual(buildUrls('a'), {
320: 'a',
--
To view, visit https://gerrit.wikimedia.org/r/386397
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia8d3b03d22ef6acf31c247dc6fa1a2a02db5c6e6
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/mobileapps
Gerrit-Branch: master
Gerrit-Owner: Mholloway <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits