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