UNPKG

tm-apps-list-api

Version:

41 lines (31 loc) 1.47 kB
"use strict"; let hl = require("highland"); let utils = require("./utils"); const request = require('superagent'); const BeneLogger = require('bene-logger'); module.exports = config => (req, res, next) => { const uncached = req.params.uncached; const source = req.params.source; const publicationId = req.params.publicationId; const listId = req.params.listId; const logger = new BeneLogger({logging: config.logging.enabled}); logger.setDefaults({ body: JSON.stringify(req.params), service_name: 'appsListAPI' }); logger.info('Pools GET request'); const articlesEndpoint = !req.query.cache || req.query.cache !== "false" ? config.cacheEndpoint : config.articleEndpoint; const curatedListsEndpoint = uncached === 'true' ? config.curatedListsEndpoint.replace('://', '://org-') : config.curatedListsEndpoint; const stream = hl(request.get(`${curatedListsEndpoint}/${source}/${listId}`)) .map(JSON.parse) .sequence() .map(id => `${source}.${id}`); const GetArticle = utils.makeArticleRequest(logger, articlesEndpoint, source, publicationId); const NotFound = utils.notFound(`No curated lists found for list /${source}/${listId}`); utils.getArticlesInParallel(logger, GetArticle, NotFound, stream) .sequence() .reject(utils.shouldBeExcluded) .collect() .map(utils.addMeta) .toCallback(utils.sendResponse(logger, res, next)); };