'use strict' const send = require('koa-send') const streamify = require('stream-array') const responders = require('./responders') function toArrayStream (iterator) { return streamify(Array.from(iterator.entries())) } function home (config, posts) { const postsStream = toArrayStream(posts) return async function (ctx, next) { responders.home(ctx, config, postsStream) } } function post (config, posts) { return async function (ctx, next) { ctx.assert(posts.has(ctx.params.filename), 404, 'Post not found') const post = posts.get(ctx.params.filename) responders.post(ctx, config, post) } } function taxonGenerator (config, term, items) { return async function (ctx, next) { const value = ctx.params.value ctx.assert(items.has(ctx.params.value), 404, `${term} ${value} not found`) const taxonItems = toArrayStream(items.get(value)) responders.taxon(ctx, config, taxonItems) } } const prefix = /^\/static\// async function serveFiles (ctx) { if (prefix.test(ctx.path)) { await send(ctx, ctx.path.replace(prefix, ''), { root: './static' }) } } module.exports = { home, post, taxonGenerator, serveFiles }