UNPKG

1.43 kBJavaScriptView Raw
1// @flow
2// Note: this file is intentionally excluded from test coverage as it's standard
3// express behavior. DO NOT put business logic or lots of conditional behavior
4// in these routes. It doesn't belong here.
5
6const bodyParser = require('body-parser');
7const processIncomingBlueprint = require('./controller');
8const registerMiddlewareRunner = require('./executeRoute');
9const { Router } = require('express');
10
11type subrequestsOptions = {
12 host?: string,
13 protocol?: string,
14};
15
16module.exports = (routePath?: string, options: subrequestsOptions = {}, app: *): express$Router => {
17 registerMiddlewareRunner(app);
18 const router = new Router();
19
20 router.use(bodyParser.text({ type: '*/*' }));
21
22 // Let the express application put the subrequests endpoint wherever they
23 // need to and include variables like :version if needed. If there is no
24 // configuration to be found, then default to '/subrequests'.
25 router.route(routePath || '/subrequests')
26 .all((req: $Subtype<express$Request>, res: express$Response, next: express$NextFunction) => {
27 req.subrequestsOptions = Object.assign({}, options, req.subrequestsOptions);
28 next();
29 })
30 .post((req: $Subtype<express$Request>, res: express$Response) =>
31 processIncomingBlueprint(req.body, req, res))
32 .get((req: $Subtype<express$Request>, res: express$Response) =>
33 processIncomingBlueprint(req.query.query, req, res));
34
35 return router;
36};