UNPKG

tm-apps-list-api

Version:

58 lines (46 loc) 1.76 kB
"use strict"; const hl = require("highland"); const utils = require("./utils"); const BeneLogger = require('bene-logger'); const tz = require('timezone'); 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({ section_id: `${source}.${escenicId}`, source: source, service_name: 'ListAPI' }); logger.info('Processing Sections Request'); logger.time('Finished Sections Request'); const articlesEndpoint = !req.query.cache || req.query.cache !== "false" ? config.cacheEndpoint : config.articleEndpoint; const stream = hl(db.article_section.findAll({ "where": { [`section_id`]: `${source}.${escenicId}`, "published_date": { "$and": { "$ne": null, "$lte": tz(new Date(), '%Y-%m-%dT%H:%M:%S.%3N%^z', 'UTC') } } }, "limit": 30, "order": [[ 'published_date', 'DESC' ]] })) .sequence() .invoke("get", {"plain": true}) .pluck("article_id"); const GetArticle = utils.makeArticleRequest(logger, articlesEndpoint, source, publicationId); const NotFound = utils.notFound(`${source}/${publicationId}/sections/${escenicId || ""} not available`); utils.getArticlesInParallel(logger, GetArticle, NotFound, stream) .sequence() .reject(utils.shouldBeExcluded) .collect() .map(utils.addMeta) .toCallback(utils.sendResponse(logger, res, next)); };