Mholloway has uploaded a new change for review. https://gerrit.wikimedia.org/r/311733
Change subject: Only provide needed page titles to RB for most-read and news responses ...................................................................... Only provide needed page titles to RB for most-read and news responses Omit needless extra processing since RB fetches metadata on its own. Tested locally against RB and all full feed content responses are as expected. Bug: T146041 Change-Id: Idc387bea82d9d596c3c6c68d4bf6dee2bc89a81e --- M lib/feed/most-read.js M lib/feed/news.js M lib/mwapi.js M spec.yaml M test/features/most-read/most-read.js M test/features/news/news.js 6 files changed, 6 insertions(+), 74 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/mobileapps refs/changes/33/311733/1 diff --git a/lib/feed/most-read.js b/lib/feed/most-read.js index 8e95f14..716c5c3 100644 --- a/lib/feed/most-read.js +++ b/lib/feed/most-read.js @@ -57,11 +57,10 @@ && response.body.items[0]; var rankedTitles = items && items.articles; resultsDate = items && items.year + '-' + items.month + '-' + items.day + 'Z'; - goodTitles = blacklist.filter(rankedTitles) .slice(0, mwapi.API_QUERY_MAX_TITLES); queryTitlesList = constructQueryListFrom(goodTitles); - return mwapi.getFeedPageListMetadata(app, req, queryTitlesList.join('|'), false); + return mwapi.getMostReadMetadata(app, req, queryTitlesList.join('|')); }).then(function (response) { api.checkResponseStatus(response); @@ -81,13 +80,10 @@ var results = goodTitles.map(function(entry) { return Object.assign(entry, { - normalizedtitle: entry.title, title: entry.article, - description: entry.terms - && entry.terms.description - && entry.terms.description[0], - thumbnail: entry.thumbnail, + pageid: undefined, article: undefined, + fromencoded: undefined, ns: undefined, terms: undefined, revisions: undefined diff --git a/lib/feed/news.js b/lib/feed/news.js index 27449a6..4932193 100644 --- a/lib/feed/news.js +++ b/lib/feed/news.js @@ -78,40 +78,6 @@ story.story = stories[j].innerHTML; result.payload.push(story); } - return mwapi.getFeedPageListMetadata(app, req, linkTitles.join('|'), true); - }).then(function(response) { - api.checkResponseStatus(response); - - var query = response.body && response.body.query; - var normalizations = query && query.normalized; - var pages = query && query.pages; - - if (normalizations) { - mUtil.adjustMemberKeys(normalizations, [['title', 'from'], - ['normalizedtitle', 'to']]); - } - mUtil.adjustMemberKeys(pages, [['normalizedtitle', 'title']]); - mUtil.mergeByProp(pages, normalizations, 'normalizedtitle'); - mUtil.fillInMemberKeys(pages, [['title', 'normalizedtitle']]); - - var pageResults = {}; - - pages.forEach(function(page) { - pageResults[page.title] = Object.assign(page, { - description: page.terms - && page.terms.description - && page.terms.description[0], - terms: undefined - }); - }); - - result.payload.forEach(function(story) { - mUtil.mergeByProp(story.links, pageResults, 'title', false); - story.links = story.links.filter(function(link) { - return !link.hasOwnProperty('missing'); - }); - }); - return result; }); } diff --git a/lib/mwapi.js b/lib/mwapi.js index 2616789..3f094cf 100644 --- a/lib/mwapi.js +++ b/lib/mwapi.js @@ -234,16 +234,11 @@ }; }; -mwapi.getFeedPageListMetadata = function(app, req, titlesList, needFeatureImage) { +mwapi.getMostReadMetadata = function(app, req, titlesList) { var query = { action: 'query', format: 'json', formatversion: 2, - prop: 'pageimages|pageterms', - piprop: 'thumbnail', - pilimit: mwapi.API_QUERY_MAX_TITLES, - pithumbsize: needFeatureImage ? mwapi.LEAD_IMAGE_XL : mwapi.CARD_THUMB_LIST_ITEM_SIZE, - wbptterms: 'description', meta: 'siteinfo', siprop: 'general', titles: titlesList diff --git a/spec.yaml b/spec.yaml index bfa730e..5529d9c 100644 --- a/spec.yaml +++ b/spec.yaml @@ -112,18 +112,13 @@ # - views: /.+/ # rank: /.+/ # title: /.+/ -# pageid: /.+/ -# normalizedtitle: /.+/ # random: # items: # - title: /.+/ # news: # - story: /.+/ # links: -# - pageid: /.+/ -# ns: /.+/ -# normalizedtitle: /.+/ -# title: /.+/ +# - title: /.+/ # image: # title: /.+/ # description: @@ -288,8 +283,6 @@ - views: /.+/ rank: /.+/ title: /.+/ - pageid: /.+/ - normalizedtitle: /.+/ # from routes/random.js /{domain}/v1/page/random/title: get: @@ -324,10 +317,7 @@ body: - story: /.+/ links: - - pageid: /.+/ - ns: /.+/ - normalizedtitle: /.+/ - title: /.+/ + - title: /.+/ # from routes/media.js /{domain}/v1/page/media/{title}: get: diff --git a/test/features/most-read/most-read.js b/test/features/most-read/most-read.js index 4e355d4..2dc1c16 100644 --- a/test/features/most-read/most-read.js +++ b/test/features/most-read/most-read.js @@ -28,10 +28,6 @@ assert.ok(res.body.articles.length); res.body.articles.forEach(function (elem) { assert.ok(elem.title, 'title should be present'); - assert.ok(elem.normalizedtitle, 'normalizedtitle should be present'); - assert.ok(elem.views, 'views should be present'); - assert.ok(elem.rank, 'rank should be present'); - assert.ok(elem.pageid, 'pageid should be present'); assert.ok(BLACKLIST.indexOf(elem.title) === -1, 'Should not include blacklisted title'); assert.ok(elem.title !== 'Main_Page', 'Should not include the Main Page'); assert.ok(elem.title.indexOf('Special:') === -1, 'Should not include Special page'); @@ -46,10 +42,6 @@ assert.ok(res.body.articles.length); res.body.articles.forEach(function (elem) { assert.ok(elem.title, 'title should be present'); - assert.ok(elem.normalizedtitle, 'normalizedtitle should be present'); - assert.ok(elem.views, 'views should be present'); - assert.ok(elem.rank, 'rank should be present'); - assert.ok(elem.pageid, 'pageid should be present'); assert.ok(BLACKLIST.indexOf(elem.title) === -1, 'Should not include blacklisted title'); assert.ok(elem.title !== 'Main_Page', 'Should not include the Main Page'); assert.ok(elem.title.indexOf('Special:') === -1, 'Should not include Special page'); diff --git a/test/features/news/news.js b/test/features/news/news.js index 3991c07..5f4e125 100644 --- a/test/features/news/news.js +++ b/test/features/news/news.js @@ -54,16 +54,9 @@ res.body.forEach(function (elem) { assert.ok(elem.story, 'story should be present'); assert.ok(elem.links, 'links should be present'); - elem.links.forEach(function (link) { - assert.ok(link.pageid, 'page id should be present >>> ' + JSON.stringify(link)); - assert.ok(link.ns !== undefined, 'namespace should be present'); // 0 is falsey but good assert.ok(link.title, 'title should be present'); - assert.ok(link.normalizedtitle, 'normalized title should be present'); assert.ok(link.missing === undefined, 'no missing links should be present'); - if (link.thumbnail) { - assert.ok(link.thumbnail.source, 'thumbnail should have source URL'); - } }); }); }); -- To view, visit https://gerrit.wikimedia.org/r/311733 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idc387bea82d9d596c3c6c68d4bf6dee2bc89a81e Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/services/mobileapps Gerrit-Branch: master Gerrit-Owner: Mholloway <mhollo...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits