From 90d45a46989e547b770b2ecf9e8eb760f8c0634b Mon Sep 17 00:00:00 2001 From: allburov Date: Sun, 21 Jan 2024 18:13:57 +0700 Subject: [PATCH] [core] Add captcha API endpoints --- src/api/auth.controller.ts | 25 +++++++++++++++++++++++++ src/core/abc/session.abc.ts | 8 ++++++++ src/structures/auth.dto.ts | 4 ++++ 3 files changed, 37 insertions(+) diff --git a/src/api/auth.controller.ts b/src/api/auth.controller.ts index 0179db9a..ec26083d 100644 --- a/src/api/auth.controller.ts +++ b/src/api/auth.controller.ts @@ -12,6 +12,7 @@ import { ApiOperation, ApiSecurity, ApiTags } from '@nestjs/swagger'; import { SessionManager } from '../core/abc/manager.abc'; import { WhatsappSession } from '../core/abc/session.abc'; import { + CaptchaBody, OTPRequest, QRCodeFormat, QRCodeQuery, @@ -74,6 +75,30 @@ class AuthController { ) { return session.authorizeCode(request.code); } + + @Get('captcha') + @SessionApiParam + @ApiFileAcceptHeader() + @UseInterceptors(new BufferResponseInterceptor()) + @ApiOperation({ + summary: 'Get captcha image.', + }) + async getCaptcha(@SessionParam session: WhatsappSession): Promise { + const image = await session.getCaptcha(); + return image.get(); + } + + @Post('captcha') + @SessionApiParam + @ApiOperation({ + summary: 'Enter captcha code.', + }) + saveCaptcha( + @SessionParam session: WhatsappSession, + @Body() body: CaptchaBody, + ) { + return session.saveCaptcha(body.code); + } } export { AuthController }; diff --git a/src/core/abc/session.abc.ts b/src/core/abc/session.abc.ts index 2b3a3943..f1c2d07d 100644 --- a/src/core/abc/session.abc.ts +++ b/src/core/abc/session.abc.ts @@ -213,6 +213,14 @@ export abstract class WhatsappSession { throw new NotImplementedByEngineError(); } + public getCaptcha(): Promise { + throw new NotImplementedByEngineError(); + } + + public saveCaptcha(code: string) { + throw new NotImplementedByEngineError(); + } + /** * Other methods */ diff --git a/src/structures/auth.dto.ts b/src/structures/auth.dto.ts index 1e52acd4..744c7fd2 100644 --- a/src/structures/auth.dto.ts +++ b/src/structures/auth.dto.ts @@ -32,6 +32,10 @@ export class OTPRequest { code: string; } +export class CaptchaBody { + code: string; +} + export class PairingCodeResponse { code: string; }