Jdlrobson has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/365192 )

Change subject: Refactor: DRY and document
......................................................................

Refactor: DRY and document

Pull repeated methods into their own private functions

Change-Id: I8c2a136ff55e9f810b8d443221fd267bd3e7df2c
---
M routes/mobile-sections.js
1 file changed, 45 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/mobileapps 
refs/changes/92/365192/1

diff --git a/routes/mobile-sections.js b/routes/mobile-sections.js
index 9b8f720..5d86cf9 100644
--- a/routes/mobile-sections.js
+++ b/routes/mobile-sections.js
@@ -273,7 +273,7 @@
  * @param {!Response} res
  * @return {!Promise}
  */
-function handleNamespaceAndSpecialCases(req, res) {
+function _handleNamespaceAndSpecialCases(req, res) {
     const ns = res.meta.ns;
     if (res.meta.mainpage) {
         return mainPageFixPromise(req, res);
@@ -286,6 +286,24 @@
 }
 
 /*
+ * Creates a raw object representing a page in preparation
+ * for further massaging
+ * @param {!Request} req
+ * @param {?Boolean} [legacy] when true MCS will
+ *  not apply legacy transformations that we are in the process
+ *  of deprecating.
+ * @return {!BBPromise}
+ */
+function _collectRawPageData(req, legacy) {
+    return BBPromise.props({
+        page: parsoid.pageContentPromise(app, req, legacy),
+        meta: pageMetadataPromise(req)
+    }).then((interimState) => {
+        return _handleNamespaceAndSpecialCases(req, interimState);
+    });
+}
+
+/*
  * @param {!Request} req
  * @param {!Response} res
  * @param {?Boolean} [legacy] when true MCS will
@@ -294,12 +312,7 @@
  * @return {!BBPromise}
  */
 function buildAllResponse(req, res, legacy) {
-    return BBPromise.props({
-        page: parsoid.pageContentPromise(app, req, legacy),
-        meta: pageMetadataPromise(req)
-    }).then((response) => {
-        return handleNamespaceAndSpecialCases(req, response);
-    }).then((response) => {
+    return _collectRawPageData(req, legacy).then((response) => {
         response = buildAll(response, legacy);
         res.status(200);
         mUtil.setETag(res, response.lead.revision);
@@ -308,14 +321,32 @@
     });
 }
 
+/*
+ * Builds an object which gives structure to the lead of an article
+ * providing access to metadata.
+ * @param {!Request} req
+ * @param {?Boolean} [legacy] when true MCS will
+ *  not apply legacy transformations that we are in the process
+ *  of deprecating.
+ * @return {!BBPromise}
+ */
+function buildLeadObject(req, legacy) {
+    return _collectRawPageData(req, legacy).then((lead) => {
+        return buildLead(lead, legacy);
+    });
+}
+
+/*
+ * Responds with the lead content of a page in structured form.
+ * @param {!Request} req
+ * @param {!Response} res
+ * @param {?Boolean} [legacy] when true MCS will
+ *  not apply legacy transformations that we are in the process
+ *  of deprecating.
+ * @return {!BBPromise}
+ */
 function buildLeadResponse(req, res, legacy) {
-    return BBPromise.props({
-        page: parsoid.pageContentPromise(app, req, legacy),
-        meta: pageMetadataPromise(req)
-    }).then((response) => {
-        return handleNamespaceAndSpecialCases(req, response);
-    }).then((response) => {
-        response = buildLead(response, legacy);
+    return buildLeadObject(req, legacy).then((response) => {
         res.status(200);
         mUtil.setETag(res, response.revision);
         mUtil.setContentType(res, mUtil.CONTENT_TYPES.mobileSections);

-- 
To view, visit https://gerrit.wikimedia.org/r/365192
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8c2a136ff55e9f810b8d443221fd267bd3e7df2c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/mobileapps
Gerrit-Branch: master
Gerrit-Owner: Jdlrobson <jrob...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to