jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/386623 )
Change subject: Hygiene: Use parallel requests in getMetadataActionApi ...................................................................... Hygiene: Use parallel requests in getMetadataActionApi Change-Id: Ideba420dc690a85809343328a2b9b250d09bd923 --- M lib/mwapi.js 1 file changed, 65 insertions(+), 67 deletions(-) Approvals: BearND: Looks good to me, approved jenkins-bot: Verified diff --git a/lib/mwapi.js b/lib/mwapi.js index 5414184..a77673a 100644 --- a/lib/mwapi.js +++ b/lib/mwapi.js @@ -4,6 +4,7 @@ 'use strict'; +const BBPromise = require('bluebird'); const sUtil = require('./util'); const api = require('./api-util'); const HTTPError = sUtil.HTTPError; @@ -155,7 +156,6 @@ * @return {!Promise} a promise resolving as an JSON object containing the response */ function getMetadataActionApi(app, req) { - let siteinfo; const props = ['coordinates','pageprops', 'pageimages', 'pageterms', 'revisions', 'info', 'langlinks']; @@ -171,75 +171,73 @@ prop: props.join('|') }); - return mwapi.getSiteInfo(app, req) - .then((si) => { - siteinfo = si; - return api.mwApiGet(app, req.params.domain, query); - }).then((apiResponse) => { - const body = apiResponse.body; - const page = body.query && body.query.pages - && body.query.pages[0]; - const coords = page && page.coordinates && page.coordinates[0]; - let geo; - const revision = page && page.revisions && page.revisions[0]; - const pageprops = page && page.pageprops; + return BBPromise.props({ + siteinfo: mwapi.getSiteInfo(app, req), + metadata: api.mwApiGet(app, req.params.domain, query) + }).then((res) => { + const body = res.metadata.body; + const page = body.query && body.query.pages && body.query.pages[0]; + const coords = page && page.coordinates && page.coordinates[0]; + const revision = page && page.revisions && page.revisions[0]; + const pageprops = page && page.pageprops; + let geo; - if (page.missing) { - throw new HTTPError({ - status: 404, - type: 'missingtitle', - title: 'The page you requested doesn\'t exist', - detail: apiResponse.body - }); - } + if (page.missing) { + throw new HTTPError({ + status: 404, + type: 'missingtitle', + title: 'The page you requested doesn\'t exist', + detail: body + }); + } - // Extract coordinates from the API response - if (coords) { - geo = { - latitude: coords.lat, - longitude: coords.lon - }; - } - const normalized = body.query - && body.query.normalized && body.query.normalized[0] - && body.query.normalized[0].to; - const displayTitle = pageprops && pageprops.displaytitle; - const title = page.title; - const thumbUrl = page.thumbnail && page.thumbnail.source; - const thumb = thumbUrl ? { - url: thumbUrl.replace('https:', '') - } : undefined; - const image = page.pageimage ? { - file: page.pageimage - } : undefined; - const protection = mwapi.simplifyProtectionObject(page.protection); - const modifier = revision && revision.anon !== undefined ? { anon: true } : {}; - modifier.user = revision && revision.user; - // Always set to unknown until support in API added (T172228) - modifier.gender = 'unknown'; - const mainpage = siteinfo.general.mainpage === title ? true : undefined; + // Extract coordinates from the API response + if (coords) { + geo = { + latitude: coords.lat, + longitude: coords.lon + }; + } + const normalized = body.query + && body.query.normalized && body.query.normalized[0] + && body.query.normalized[0].to; + const displayTitle = pageprops && pageprops.displaytitle; + const title = page.title; + const thumbUrl = page.thumbnail && page.thumbnail.source; + const thumb = thumbUrl ? { + url: thumbUrl.replace('https:', '') + } : undefined; + const image = page.pageimage ? { + file: page.pageimage + } : undefined; + const protection = mwapi.simplifyProtectionObject(page.protection); + const modifier = revision && revision.anon !== undefined ? { anon: true } : {}; + modifier.user = revision && revision.user; + // Always set to unknown until support in API added (T172228) + modifier.gender = 'unknown'; + const mainpage = res.siteinfo.general.mainpage === title ? true : undefined; - return { - geo, - contentmodel: revision && revision.contentmodel, - title: page.title, - displaytitle: displayTitle || title, - normalizedtitle: normalized || title, - pageprops, - image, - id: page.pageid, - languagecount: page.langlinks ? page.langlinks.length : 0, - lastmodified: revision && revision.timestamp, - lastmodifier: modifier, - thumb, - ns: page.ns, - protection, - editable: !protection.edit, - mainpage, - revision: revision && revision.revid, - description: page.terms && page.terms.description[0] - }; - }); + return { + geo, + contentmodel: revision && revision.contentmodel, + title: page.title, + displaytitle: displayTitle || title, + normalizedtitle: normalized || title, + pageprops, + image, + id: page.pageid, + languagecount: page.langlinks ? page.langlinks.length : 0, + lastmodified: revision && revision.timestamp, + lastmodifier: modifier, + thumb, + ns: page.ns, + protection, + editable: !protection.edit, + mainpage, + revision: revision && revision.revid, + description: page.terms && page.terms.description[0] + }; + }); } /** -- To view, visit https://gerrit.wikimedia.org/r/386623 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ideba420dc690a85809343328a2b9b250d09bd923 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/services/mobileapps Gerrit-Branch: master Gerrit-Owner: Mholloway <mhollo...@wikimedia.org> Gerrit-Reviewer: BearND <bsitzm...@wikimedia.org> Gerrit-Reviewer: Fjalapeno <cfl...@wikimedia.org> Gerrit-Reviewer: GWicke <gwi...@wikimedia.org> Gerrit-Reviewer: Jdlrobson <jrob...@wikimedia.org> Gerrit-Reviewer: Mhurd <mh...@wikimedia.org> Gerrit-Reviewer: Mobrovac <mobro...@wikimedia.org> Gerrit-Reviewer: Ppchelko <ppche...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits