1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import swaggerJsDoc, { OAS3Options, Options, SecurityRequirement } from 'swagger-jsdoc';
- import { Middleware } from '../base/http';
- import swaggerUi from 'swagger-ui-express';
- import { $$ } from '../base/i18n';
- class SwaggerUiSetupMiddleware extends Middleware {
- protected order = -96;
- protected route = this.context.swaggerRoute;
- protected action: any = this.getSetup();
- private getSetup(): any {
- if(!this.context.swaggerDocsPath)
- return (req: Request, res: Response, next: any) => { next(); };
- const swaggerOptions : OAS3Options = {
- swaggerDefinition: {
- openapi: '3.0.1',
- info: {
- title: this.context.swaggerTitle!,
- version: this.context.swaggerApiVersion!,
- description: this.context.swaggerDescription!,
- },
- servers: [
- { url: this.context.host }
- ],
- },
- apis: [this.context.swaggerDocsPath],
- };
- if(this.context.swaggerComponents)
- swaggerOptions.swaggerDefinition!.components = this.context.swaggerComponents;
- if(this.context.swaggerSecurity)
- swaggerOptions.swaggerDefinition!.security = this.context.swaggerSecurity as SecurityRequirement[];
- const swaggerDocs = swaggerJsDoc(swaggerOptions as Options);
- this.context.logInfo($$('org.crazydoctor.expressts.swagger.registered', { path: this.context.swaggerRoute }));
- return swaggerUi.setup(swaggerDocs);
- }
- }
- export default SwaggerUiSetupMiddleware;
|