From 9b9f1015771d45a00bf2d336f246231b81443d46 Mon Sep 17 00:00:00 2001 From: David Mehren Date: Sun, 10 Jan 2021 19:21:00 +0100 Subject: [PATCH] MarkdownBody: Register swagger metadata As explained in https://github.com/nestjs/swagger/issues/32#issuecomment-716169471, it's possible to register swagger metadata in custom decorators by providing an array of `enhancers`. We now add metadata with the `MarkdownBody` decorator: The request needs a `body` with content-type `text/markdown`. Signed-off-by: David Mehren --- src/api/utils/markdownbody-decorator.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/api/utils/markdownbody-decorator.ts b/src/api/utils/markdownbody-decorator.ts index 6d627d462..1c81df3ea 100644 --- a/src/api/utils/markdownbody-decorator.ts +++ b/src/api/utils/markdownbody-decorator.ts @@ -10,6 +10,7 @@ import { ExecutionContext, InternalServerErrorException, } from '@nestjs/common'; +import { ApiBody, ApiConsumes } from '@nestjs/swagger'; import * as getRawBody from 'raw-body'; /** @@ -37,4 +38,17 @@ export const MarkdownBody = createParamDecorator( ); } }, + [ + (target, key) => { + ApiConsumes('text/markdown')( + target, + key, + Object.getOwnPropertyDescriptor(target, key), + ); + ApiBody({ + required: true, + schema: { example: '# Markdown Body' }, + })(target, key, Object.getOwnPropertyDescriptor(target, key)); + }, + ], );