UNPKG

1.47 kBJavaScriptView Raw
1/**
2 * apeman app to serve dynamic contents.
3 * @memberof module:apeman-app-dynamic/lib
4 * @function create
5 * @param {object} [options] - Optional settings.
6 * @param {object} [options.form] - Options for apeman-app-form
7 * @param {object} [options.header] - Options for apeman-app-header
8 * @param {object} [options.json] - Options for apeman-app-json
9 * @param {object} [options.lang] - Options for apeman-app-lang
10 * @param {object} [options.query] - Options for apeman-app-query
11 * @returns {function} - Defined app function.
12 */
13
14"use strict";
15
16var argx = require('argx'),
17 async = require('async'),
18 objnest = require('objnest');
19
20var middlewares = require('./middlewares');
21
22/** @lends create */
23function create(options) {
24 var args = argx(arguments);
25 options = objnest.expand(args.pop('object') || {});
26
27 var handlers = Object.keys(middlewares).map(function (key) {
28 var mw = middlewares[key];
29 return mw.module(options[key] || {});
30 });
31
32 /**
33 * Defined app.
34 * @function app
35 * @param {object} req - Request object.
36 * @param {object} res - Response object.
37 * @param {function} next - Pass to next handler.
38 */
39 function app(req, res, next) {
40 async.eachSeries(handlers, function (handler, next) {
41 handler(req, res, next);
42 }, next);
43 }
44
45 // Description of this app.
46 app.$desc = "Add dynamic content handlers.";
47 return app;
48}
49
50module.exports = create;