adonis5-swagger
Version:
Swagger provider for AdonisJS 5
49 lines (48 loc) • 2.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const SwaggerController_1 = require("../src/SwaggerController");
const AuthMiddleware_1 = require("../src/Auth/AuthMiddleware");
const AuthHeaderDecoder_1 = require("../src/Auth/AuthHeaderDecoder");
class SwaggerProvider {
constructor(app) {
this.app = app;
}
async register() {
this.registerMiddleware();
}
async boot() {
this.initSwaggerRoutes();
}
initSwaggerRoutes() {
const config = this.app.container.resolveBinding('Adonis/Core/Config');
const router = this.app.container.resolveBinding('Adonis/Core/Route');
const controller = new SwaggerController_1.SwaggerController(this.app.container);
if (config.get('swagger.uiEnabled', true)) {
router
.get(`${config.get('swagger.uiUrl', 'docs')}/:fileName?`, controller.swaggerUI.bind(controller))
.middleware(config.get('swagger.middleware', []));
}
if (config.get('swagger.specEnabled', true)) {
router
.get(config.get('swagger.specUrl'), controller.swaggerFile.bind(controller))
.middleware(this.mergeAuthMiddleware(config.get('swagger.middleware', [])));
}
}
registerMiddleware() {
this.app.container.singleton('Adonis/Addons/Swagger/AuthMiddleware', () => {
const config = this.app.container.resolveBinding('Adonis/Core/Config');
if (!config.get('swagger.swaggerAuth')) {
return null;
}
return new AuthMiddleware_1.AuthMiddleware(config.get('swagger.swaggerAuth'), new AuthHeaderDecoder_1.AuthHeaderDecoder());
});
}
mergeAuthMiddleware(middlewares) {
const config = this.app.container.resolveBinding('Adonis/Core/Config');
return config.get('swagger.swaggerAuth.authMiddleware')
? middlewares.concat(config.get('swagger.swaggerAuth.authMiddleware'))
: middlewares;
}
}
exports.default = SwaggerProvider;
SwaggerProvider.needsApplication = true;