UNPKG

adonis5-swagger

Version:
49 lines (48 loc) 2.11 kB
"use strict"; 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;