UNPKG

@dedel.alex/adonis6-swagger

Version:
62 lines (61 loc) 1.94 kB
import { AuthMiddleware } from '../src/auth/auth_middleware.js'; import { AuthHeaderDecoder } from '../src/auth/auth_header_decoder.js'; import { SwaggerController } from '../src/swagger_controller.js'; export default class SwaggerProvider { app; static needsApplication = true; /** * Constructor */ constructor(app) { this.app = app; } /** * Register */ register() { this.registerMiddleware(); } /** * Boot */ async boot() { return this.initSwaggerRoutes(); } /** * Register middleware */ registerMiddleware() { this.app.container.singleton(AuthMiddleware, () => { const swaggerAuth = this.app.config.get('swagger.swaggerAuth'); return new AuthMiddleware(swaggerAuth, new AuthHeaderDecoder()); }); } /** * Init swagger routes */ async initSwaggerRoutes() { const config = await this.app.config; const router = await this.app.container.make('router'); const controller = new SwaggerController(this.app); 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(config.get('swagger.middleware', [])); } } /** * Merge auth middleware */ async mergeAuthMiddleware(middlewares) { const config = await this.app.config; return config.get('swagger.swaggerAuth.authMiddleware') ? middlewares.concat(config.get('swagger.swaggerAuth.authMiddleware')) : middlewares; } }