This repository has been archived by the owner on Sep 1, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathapp.js
72 lines (61 loc) · 1.59 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
module.exports = require('injectdeps')(
[
'app.engine',
'swagger.tools',
'swagger.validator',
'swagger.router',
'app.errorHandler',
'app.config',
'container',
'logger'
],
function(
engine,
swaggerTools,
swaggerValidator,
swaggerRouter,
errorHandler,
config,
container,
logger
) {
const log = logger('swagger.app');
const apiDocsPath = container.hasObject('swagger.apiDocsPath') ?
container.getObject('swagger.apiDocsPath') : '/api-docs';
return swaggerTools
.then((tools) => {
let pre, post;
const app = engine(config);
app.get(apiDocsPath, (req, res) => {
res.contentType('application/json')
.send(tools.apiDocsJson());
//do not call next, do not pass go
});
app.use(tools.swaggerMetadata());
app.use(swaggerValidator());
if(container.hasObject('app.pre')) {
pre = container.getObject('app.pre');
if(Array.isArray(pre)) {
for(let i in pre) {
app.use(pre[i]);
}
}
}
app.use(swaggerRouter({ prefix: config.prefix }));
if(container.hasObject('app.post')) {
post = container.getObject('app.post');
if(Array.isArray(post)) {
for(let u in post) {
app.use(post[i]);
}
}
}
app.use(errorHandler());
return app;
})
.catch(err => {
log.error(err, 'app failed to start');
return Promise.reject(err);
});
}
);