UNPKG

tm-apps-list-api

Version:

55 lines (43 loc) 1.64 kB
"use strict"; let hl = require("highland"); let utils = require("./utils"); let R = require("ramda"); const BeneLogger = require('bene-logger'); const isFuture = x => new Date(x.published_date) > new Date(); module.exports = (config, db) => (req, res, next) => { const publicationId = req.params.publicationId; const escenicId = req.params.escenicId; const source = req.params.source; const logger = new BeneLogger({logging: config.logging.enabled}); logger.setDefaults({ tag_id: `${source}.${escenicId}`, source: source, service_name: 'list-api' }); logger.info('Processing Authors Request'); logger.time('Finished Authors Request'); const articlesEndpoint = !req.query.cache || req.query.cache !== "false" ? config.cacheEndpoint : config.articleEndpoint; const stream = hl(db.article_author.findAll({ "where": { "author_id": `${source}.${escenicId}` }, "limit": 20, "order": [[ 'published_date', 'DESC' ]] })) .reject(R.isNil) .sequence() .invoke("get", {"plain": true}) .reject(isFuture) .pluck("article_id"); const GetArticle = utils.makeArticleRequest(logger, articlesEndpoint, source, publicationId); const NotFound = utils.notFound(`${source}/${publicationId}/authors/${escenicId || ""} not available`); utils.getArticlesInParallel(logger, GetArticle, NotFound, stream) .sequence() .reject(utils.shouldBeExcluded) .collect() .map(utils.addMeta) .toCallback(utils.sendResponse(logger, res, next)); };