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.query] - Options for apeman-app-query
|
8 | * @param {object} [options.header] - Options for apeman-app-header
|
9 | * @param {object} [options.lang] - Options for apeman-app-lang
|
10 | * @param {object} [options.location] - Options for apeman-app-location
|
11 | * @param {object} [options.format] - Options for apeman-app-format
|
12 | * @param {object} [options.redirect] - Options for apeman-app-redirect
|
13 | * @param {object} [options.json] - Options for apeman-app-json
|
14 | * @param {object} [options.html] - Options for apeman-app-html
|
15 | * @param {object} [options.send] - Options for apeman-app-send
|
16 | * @returns {function} - Defined app function.
|
17 | */
|
18 |
|
19 | ;
|
20 |
|
21 | const argx = require('argx'),
|
22 | async = require('async'),
|
23 | objnest = require('objnest');
|
24 |
|
25 | const middlewares = require('./middlewares');
|
26 |
|
27 | const debug = require('debug')('apeman:app:dynamic');
|
28 |
|
29 | /** @lends create */
|
30 | function create(options) {
|
31 | let args = argx(arguments);
|
32 | options = objnest.expand(args.pop('object') || {});
|
33 |
|
34 | let handlers = Object.keys(middlewares).map((key) => {
|
35 | let mw = middlewares[key];
|
36 | return mw.module(options[key] || {});
|
37 | });
|
38 |
|
39 | /**
|
40 | * Defined app.
|
41 | * @function app
|
42 | * @param {object} req - Request object.
|
43 | * @param {object} res - Response object.
|
44 | * @param {function} next - Pass to next handler.
|
45 | */
|
46 | function app(req, res, next) {
|
47 | async.eachSeries(handlers, (handler, next) => {
|
48 | handler(req, res, next);
|
49 | }, next);
|
50 | }
|
51 |
|
52 | // Description of this app.
|
53 | app.$desc = "Add dynamic content handlers.";
|
54 | return app;
|
55 | }
|
56 |
|
57 | module.exports = create;
|