mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-11-23 02:06:29 -05:00
Swagger: Split public and private API
Fixes #759 Signed-off-by: David Mehren <git@herrmehren.de>
This commit is contained in:
parent
932cb636ff
commit
3ba64f15f1
2 changed files with 45 additions and 12 deletions
18
src/main.ts
18
src/main.ts
|
@ -8,11 +8,11 @@ import { ValidationPipe } from '@nestjs/common';
|
||||||
import { ConfigService } from '@nestjs/config';
|
import { ConfigService } from '@nestjs/config';
|
||||||
import { NestFactory } from '@nestjs/core';
|
import { NestFactory } from '@nestjs/core';
|
||||||
import { NestExpressApplication } from '@nestjs/platform-express';
|
import { NestExpressApplication } from '@nestjs/platform-express';
|
||||||
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
|
|
||||||
import { AppModule } from './app.module';
|
import { AppModule } from './app.module';
|
||||||
import { AppConfig } from './config/app.config';
|
import { AppConfig } from './config/app.config';
|
||||||
import { NestConsoleLoggerService } from './logger/nest-console-logger.service';
|
|
||||||
import { MediaConfig } from './config/media.config';
|
import { MediaConfig } from './config/media.config';
|
||||||
|
import { NestConsoleLoggerService } from './logger/nest-console-logger.service';
|
||||||
|
import { setupPrivateApiDocs, setupPublicApiDocs } from './utils/swagger';
|
||||||
|
|
||||||
async function bootstrap() {
|
async function bootstrap() {
|
||||||
const app = await NestFactory.create<NestExpressApplication>(AppModule);
|
const app = await NestFactory.create<NestExpressApplication>(AppModule);
|
||||||
|
@ -23,16 +23,10 @@ async function bootstrap() {
|
||||||
const appConfig = configService.get<AppConfig>('appConfig');
|
const appConfig = configService.get<AppConfig>('appConfig');
|
||||||
const mediaConfig = configService.get<MediaConfig>('mediaConfig');
|
const mediaConfig = configService.get<MediaConfig>('mediaConfig');
|
||||||
|
|
||||||
const swaggerOptions = new DocumentBuilder()
|
setupPublicApiDocs(app);
|
||||||
.setTitle('HedgeDoc')
|
if (process.env.NODE_ENV === 'development') {
|
||||||
.setVersion('2.0-dev')
|
setupPrivateApiDocs(app);
|
||||||
.addSecurity('token', {
|
}
|
||||||
type: 'http',
|
|
||||||
scheme: 'bearer',
|
|
||||||
})
|
|
||||||
.build();
|
|
||||||
const document = SwaggerModule.createDocument(app, swaggerOptions);
|
|
||||||
SwaggerModule.setup('apidoc', app, document);
|
|
||||||
|
|
||||||
app.useGlobalPipes(
|
app.useGlobalPipes(
|
||||||
new ValidationPipe({
|
new ValidationPipe({
|
||||||
|
|
39
src/utils/swagger.ts
Normal file
39
src/utils/swagger.ts
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { INestApplication } from '@nestjs/common';
|
||||||
|
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
|
||||||
|
import { PrivateApiModule } from '../api/private/private-api.module';
|
||||||
|
import { PublicApiModule } from '../api/public/public-api.module';
|
||||||
|
|
||||||
|
export function setupPublicApiDocs(app: INestApplication) {
|
||||||
|
const publicApiOptions = new DocumentBuilder()
|
||||||
|
.setTitle('HedgeDoc Public API')
|
||||||
|
// TODO: Use real version
|
||||||
|
.setVersion('2.0-dev')
|
||||||
|
.addSecurity('token', {
|
||||||
|
type: 'http',
|
||||||
|
scheme: 'bearer',
|
||||||
|
})
|
||||||
|
.build();
|
||||||
|
const publicApi = SwaggerModule.createDocument(app, publicApiOptions, {
|
||||||
|
include: [PublicApiModule],
|
||||||
|
});
|
||||||
|
SwaggerModule.setup('apidoc', app, publicApi);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setupPrivateApiDocs(app: INestApplication) {
|
||||||
|
const privateApiOptions = new DocumentBuilder()
|
||||||
|
.setTitle('HedgeDoc Private API')
|
||||||
|
// TODO: Use real version
|
||||||
|
.setVersion('2.0-dev')
|
||||||
|
.build();
|
||||||
|
|
||||||
|
const privateApi = SwaggerModule.createDocument(app, privateApiOptions, {
|
||||||
|
include: [PrivateApiModule],
|
||||||
|
});
|
||||||
|
SwaggerModule.setup('private/apidoc', app, privateApi);
|
||||||
|
}
|
Loading…
Reference in a new issue