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

Reply via email to