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 $%&amp;</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 $%&amp;</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=\"./&amp;\" 
title=\"&amp;\" class=\"mw-redirect\">&amp;</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 %!\"$&amp;'()*,-.0-9:;=?@A-Z^_`a-z~+    
titleEnd#FragmentStart_!$&amp;'()*+,;=-._~:@/?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

Reply via email to