Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shishirsharma/be5f086aa4e7ff5d8b0ace64d9a4429a to your computer and use it in GitHub Desktop.
Save shishirsharma/be5f086aa4e7ff5d8b0ace64d9a4429a to your computer and use it in GitHub Desktop.
Swagger UI middleware upgrade latest version
'use strict';
var debug = require('debug')('botkit:register_with_swagger_express');
var SwaggerExpress = require('swagger-express-mw');
var SwaggerUi = require('swagger-tools/middleware/swagger-ui');
// var ejwt = require('express-jwt');
// // Initialize express-jwt
// var jwt = ejwt({
// secret: "bla bla blackship" //new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'),
// // audience: process.env.AUTH0_CLIENT_ID
// });
var jwt = require('jsonwebtoken');
let main_config = require('./../../config');
const path = require("path");
const fs = require('fs');
module.exports = function(webserver, controller) {
var config = {
host: main_config.server.apiBaseEndpoint,
appRoot: __dirname + '../..', // required config
swaggerFile: __dirname + '../../../swagger/swagger.yaml',
swaggerSecurityHandlers: {
ApiKeyAuth: function(req, authOrSecDef, scopesOrApiKey, cb) {
var token = req.headers['x-api-key'];
let public_key = fs.readFileSync(__dirname + '/../../config/public_key.pem');
jwt.verify(token, public_key, function(err, decoded){
if(!err){
let userId = decoded.userId;
let teamId = decoded.teamId;
req.user = {userId, teamId};
return cb(null);
// req.res.json(secrets);
} else {
return cb(new Error('access denied - user does not exist in auth'));
// req.res.send(err);
}
});
// jwt(req, req.res, function(err) {
// if (req.user == undefined) {
// return cb(new Error('access denied - user does not exist in auth0'));
// }
// else {
// console.log(req.user); // Contains { iss: 'https://xxx.auth0.com/', sub: 'auth0|xxx', ... }
// return cb(null);
// }
// });
}
}
};
SwaggerExpress.create(config, function(err, swaggerExpress) {
if (err) { throw err; }
// Add swagger-ui (This must be before swaggerExpress.register)
// let apiDeclarations = swaggerExpress.runner.swagger;
// apiDeclarations.swaggerUiDir = path.join(__dirname, '..', '..', 'node_modules', 'swagger-ui-dist');
// let options = {
// apiDocs: "/api-docs",
// swaggerUi: "/docs",
// swaggerUiDir: path.join(__dirname, '..', '..', 'node_modules', 'swagger-ui-dist')
// }
// webserver.use(SwaggerUi(swaggerExpress.runner.swagger));
// install middleware
swaggerExpress.register(webserver);
// webserver.use(SwaggerUi(swaggerExpress.runner.swagger));
var port = process.env.PORT || 8080;
// app.listen(port);
if (swaggerExpress.runner.swagger.paths['/hello']) {
console.log('try this:\ncurl http://127.0.0.1:' + port + '/hello?name=Scott');
}
});
};
'use strict';
var fs = require('fs');
var path = require('path');
var serveStatic = require('serve-static');
var yaml = require('js-yaml');
var SWAGGER_UI_PATH = '/docs';
var SWAGGER_UI_FILES = __dirname + '/./../../node_modules/swagger-ui-dist';
var indexHtml = fs.readFileSync(path.join(SWAGGER_UI_FILES, 'index.html'), 'utf-8');
var swaggerJson = yaml.safeLoad(fs.readFileSync(__dirname + '/./../../swagger/swagger.yaml', 'utf-8'));
// put relative path for loading url in swagger-ui index.html
indexHtml = indexHtml.replace(
'url: "https://petstore.swagger.io/v2/swagger.json"',
'url: "/api-docs"'
);
module.exports = function(webserver, controller) {
// --------------------------- SwaggerUI -------------------------------------
webserver.get("/api-docs/", function(req, res){
res.send(swaggerJson); //return swagger json
});
// serve the modified index.html for swagger ui
webserver.get(SWAGGER_UI_PATH, function(req, res) {
res.setHeader('content-type', 'text/html');
res.send(indexHtml);
});
// serve the static assets for swagger ui
webserver.use(SWAGGER_UI_PATH, serveStatic(SWAGGER_UI_FILES));
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment