[MediaWiki-commits] [Gerrit] mediawiki...mobileapps[master]: Use $merge to specify content for hydration in RESTBase
jenkins-bot has submitted this change and it was merged. Change subject: Use $merge to specify content for hydration in RESTBase .. Use $merge to specify content for hydration in RESTBase Replaces sending of titles with $merge properties containing the public RESTBase summary URL as the value. Updates tests accordingly. Replacement of two skipped news tests to follow. Change-Id: Ia42aeb9c95c64f246aea85b05435103a728da19d --- M lib/feed/featured.js M lib/feed/most-read.js M lib/feed/news.js M lib/mobile-util.js M spec.yaml M test/features/app/spec.js M test/features/featured/pagecontent.js M test/features/most-read/most-read.js M test/features/news/news.js 9 files changed, 60 insertions(+), 46 deletions(-) Approvals: Mobrovac: Looks good to me, approved jenkins-bot: Verified diff --git a/lib/feed/featured.js b/lib/feed/featured.js index 5a366c7..3f60059 100644 --- a/lib/feed/featured.js +++ b/lib/feed/featured.js @@ -5,6 +5,7 @@ 'use strict'; var preq = require('preq'); +var mUtil = require('../mobile-util'); var api = require('../api-util'); var mwapi = require('../mwapi'); var dateUtil = require('../dateUtil'); @@ -72,6 +73,9 @@ } function promise(app, req) { +var tfaPageObj; +var pageTitle; +var domain = req.params.domain; var aggregated = !!req.query.aggregated; if (!dateUtil.validate(dateUtil.hyphenDelimitedDateString(req))) { @@ -81,7 +85,7 @@ dateUtil.throwDateError(); } -if (req.params.domain.indexOf('en') !== 0 || req.params.domain.indexOf('beta.wmflabs.org') > 0) { +if (domain.indexOf('en') !== 0 || domain.indexOf('beta.wmflabs.org') > 0) { if (aggregated) { return BBPromise.resolve({}); } else { @@ -94,9 +98,7 @@ } } -var tfaPageObj, pageTitle; - -return requestFeaturedArticleTitle(app, req.params.domain, dateUtil.getRequestedDate(req)) +return requestFeaturedArticleTitle(app, domain, dateUtil.getRequestedDate(req)) .then(function (response) { mwapi.checkForQueryPagesInResponse(req, response); tfaPageObj = getPageObject(response); @@ -106,7 +108,7 @@ }); }).then(function (res) { return { -payload: { title: res.dbTitle }, +payload: { $merge: [ mUtil.getRbPageSummaryUrl(app, domain, res.dbTitle) ] }, meta: { etag: tfaPageObj.pageid } }; }).catch(function (err) { diff --git a/lib/feed/most-read.js b/lib/feed/most-read.js index 4805a2d..2e451b1 100644 --- a/lib/feed/most-read.js +++ b/lib/feed/most-read.js @@ -145,11 +145,12 @@ var results = goodTitles.map(function(entry) { return Object.assign(entry, { -title: entry.article, +$merge: [ mUtil.getRbPageSummaryUrl(app, req.params.domain, entry.article) ], article: undefined, fromencoded: undefined, ns: undefined, terms: undefined, +title: undefined, revisions: undefined }); }); diff --git a/lib/feed/news.js b/lib/feed/news.js index d183479..6faff8e 100644 --- a/lib/feed/news.js +++ b/lib/feed/news.js @@ -16,17 +16,6 @@ return href; } -function pushTitleIfNew(linkTitles, story, href) { -if (linkTitles.indexOf(href) === -1) { -story.links.push({ title: href }); -linkTitles.push(href); -} -} - -function createLinksList(href, linkTitles, story) { -pushTitleIfNew(linkTitles, story, removeFragment(href.slice(1))); -} - function promise(app, req) { var lang = req.params.domain.split('.')[0]; var aggregated = !!req.query.aggregated; @@ -63,7 +52,15 @@ }; for (var i = 0, n = anchors.length; i < n; i++) { -createLinksList(anchors[i].href, linkTitles, story); +var href = anchors[i].href; +var title = removeFragment(href.slice(1)); + +if (linkTitles.indexOf(title) === -1) { +story.links.push({ +$merge: [ mUtil.getRbPageSummaryUrl(app, req.params.domain, title) ] +}); +linkTitles.push(title); +} } story.story = stories[j].innerHTML; @@ -77,7 +74,5 @@ promise: promise, // visible for testing -removeFragment: removeFragment, -pushTitleIfNew: pushTitleIfNew, -createLinksList: createLinksList +removeFragment: removeFragment }; diff --git a/lib/mobile-util.js b/lib/mobile-util.js index 6e66ab4..15a2393 100644 --- a/lib/mobile-util.js +++ b/lib/mobile-util.js @@ -188,6 +188,17 @@ return dateString + '/' + uuid.now().toString(); }; +mUtil.getRbPageSummaryUrl = function(app, domain, title) { +var request = app.restbase_tpl.expand({ +request: { +params: { +domain:
[MediaWiki-commits] [Gerrit] mediawiki...mobileapps[master]: Use $merge to specify content for hydration in RESTBase
Mholloway has uploaded a new change for review. https://gerrit.wikimedia.org/r/320306 Change subject: Use $merge to specify content for hydration in RESTBase .. Use $merge to specify content for hydration in RESTBase Replaces sending of titles with $merge properties containing the public RESTBase summary URL as the value. Updates tests accordingly. Change-Id: Ia42aeb9c95c64f246aea85b05435103a728da19d --- M lib/feed/featured.js M lib/feed/most-read.js M lib/feed/news.js M lib/mobile-util.js M spec.yaml M test/features/app/spec.js M test/features/featured/pagecontent.js M test/features/news/news.js 8 files changed, 47 insertions(+), 30 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/mobileapps refs/changes/06/320306/1 diff --git a/lib/feed/featured.js b/lib/feed/featured.js index 5a366c7..a51e95f 100644 --- a/lib/feed/featured.js +++ b/lib/feed/featured.js @@ -5,6 +5,7 @@ 'use strict'; var preq = require('preq'); +var mUtil = require('../mobile-util'); var api = require('../api-util'); var mwapi = require('../mwapi'); var dateUtil = require('../dateUtil'); @@ -72,6 +73,9 @@ } function promise(app, req) { +var tfaPageObj; +var pageTitle; +var domain = req.params.domain; var aggregated = !!req.query.aggregated; if (!dateUtil.validate(dateUtil.hyphenDelimitedDateString(req))) { @@ -81,7 +85,7 @@ dateUtil.throwDateError(); } -if (req.params.domain.indexOf('en') !== 0 || req.params.domain.indexOf('beta.wmflabs.org') > 0) { +if (domain.indexOf('en') !== 0 || domain.indexOf('beta.wmflabs.org') > 0) { if (aggregated) { return BBPromise.resolve({}); } else { @@ -94,9 +98,7 @@ } } -var tfaPageObj, pageTitle; - -return requestFeaturedArticleTitle(app, req.params.domain, dateUtil.getRequestedDate(req)) +return requestFeaturedArticleTitle(app, domain, dateUtil.getRequestedDate(req)) .then(function (response) { mwapi.checkForQueryPagesInResponse(req, response); tfaPageObj = getPageObject(response); @@ -106,7 +108,7 @@ }); }).then(function (res) { return { -payload: { title: res.dbTitle }, +payload: { $merge: [ mUtil.getRbPageSummaryUrl(domain, res.dbTitle) ] }, meta: { etag: tfaPageObj.pageid } }; }).catch(function (err) { diff --git a/lib/feed/most-read.js b/lib/feed/most-read.js index 4805a2d..6f2eb80 100644 --- a/lib/feed/most-read.js +++ b/lib/feed/most-read.js @@ -145,7 +145,7 @@ var results = goodTitles.map(function(entry) { return Object.assign(entry, { -title: entry.article, +$merge: [ mUtil.getRbPageSummaryUrl(req.params.domain, entry.article) ], article: undefined, fromencoded: undefined, ns: undefined, diff --git a/lib/feed/news.js b/lib/feed/news.js index d183479..df70be3 100644 --- a/lib/feed/news.js +++ b/lib/feed/news.js @@ -16,15 +16,17 @@ return href; } -function pushTitleIfNew(linkTitles, story, href) { -if (linkTitles.indexOf(href) === -1) { -story.links.push({ title: href }); -linkTitles.push(href); +function pushTitleIfNew(domain, linkTitles, story, title) { +if (linkTitles.indexOf(title) === -1) { +story.links.push({ +$merge: [ mUtil.getRbPageSummaryUrl(domain, title) ] +}); +linkTitles.push(title); } } -function createLinksList(href, linkTitles, story) { -pushTitleIfNew(linkTitles, story, removeFragment(href.slice(1))); +function createLinksList(domain, href, linkTitles, story) { +pushTitleIfNew(domain, linkTitles, story, removeFragment(href.slice(1))); } function promise(app, req) { @@ -63,7 +65,7 @@ }; for (var i = 0, n = anchors.length; i < n; i++) { -createLinksList(anchors[i].href, linkTitles, story); +createLinksList(req.params.domain, anchors[i].href, linkTitles, story); } story.story = stories[j].innerHTML; diff --git a/lib/mobile-util.js b/lib/mobile-util.js index 6e66ab4..44f26f3 100644 --- a/lib/mobile-util.js +++ b/lib/mobile-util.js @@ -188,6 +188,10 @@ return dateString + '/' + uuid.now().toString(); }; +mUtil.getRbPageSummaryUrl = function(domain, title) { +return 'https://' + domain + '/api/rest_v1/page/summary/' + encodeURIComponent(title); +}; + mUtil.throw404 = function(message) { throw new HTTPError({ status: 404, diff --git a/spec.yaml b/spec.yaml index a3aa248..f232f1e 100644 --- a/spec.yaml +++ b/spec.yaml @@ -95,7 +95,7 @@ '200': description: The title of a Wikipedia's Featured Article of the Day schema: -$ref: '#/definitions/article_title' +$ref: '#/definitions/article_summary_merge_link'