UNPKG

1.22 kBJavaScriptView Raw
1'use strict';
2
3var swaggerTools = require('swagger-tools');
4var jsyaml = require('js-yaml');
5var fs = require('fs');
6
7// swaggerRouter configuration
8var options = {
9 controllers: './controllers',
10 useStubs: false
11};
12
13// The Swagger document (require it, build it programmatically, fetch it from a URL, ...)
14var spec = fs.readFileSync('./api/swagger.yaml', 'utf8');
15var swaggerDoc = jsyaml.safeLoad(spec);
16
17function toPromise(f, req, res) {
18 return new Promise(function(resolve, reject) {
19 f(req, res, function(err) {
20 if (err) {
21 reject(err);
22 } else {
23 resolve();
24 }
25 });
26 });
27}
28
29exports.swagger_generator = function(req, res) {
30 swaggerTools.initializeMiddleware(swaggerDoc, function(middleware) {
31 var metadata = middleware.swaggerMetadata();
32 var validator = middleware.swaggerValidator();
33 var router = middleware.swaggerRouter(options);
34 req.url = swaggerDoc.basePath + req.url;
35 toPromise(metadata, req, res).then(function() {
36 return toPromise(validator, req, res);
37 }).then(function() {
38 return toPromise(router, req, res);
39 }).catch(function(err) {
40 console.error(err);
41 res.status(res.statusCode || 400).send(err);
42 });
43 });
44};