Skip to content

Commit bcf59a2

Browse files
committed
feat: adiciona controlador de chamadas
Adiciona o controlador de chamadas para oferecer chamadas falsas. - Adiciona o arquivo `call.controller.ts` com a classe `CallController` que possui o método `offerCall` para oferecer chamadas falsas. - Adiciona o arquivo `call.dto.ts` com as classes `Metadata` e `OfferCallDto` para definir os dados da chamada. - Atualiza o arquivo `sendMessage.dto.ts` removendo a classe `OfferCallDto`. - Atualiza o arquivo `whatsapp.baileys.service.ts` importando a classe `OfferCallDto` corretamente e atualizando o método `offerCall` para receber os parâmetros corretos. - Adiciona o arquivo `call.router.ts` com a classe `CallRouter` para lidar com as rotas relacionadas a chamadas. - Atualiza o arquivo `index.router.ts` para incluir as rotas relacionadas a chamadas.
1 parent 0af0058 commit bcf59a2

7 files changed

Lines changed: 50 additions & 23 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { OfferCallDto } from '@api/dto/call.dto';
2+
import { InstanceDto } from '@api/dto/instance.dto';
3+
import { WAMonitoringService } from '@api/services/monitor.service';
4+
5+
export class CallController {
6+
constructor(private readonly waMonitor: WAMonitoringService) {}
7+
8+
public async offerCall({ instanceName }: InstanceDto, data: OfferCallDto) {
9+
return await this.waMonitor.waInstances[instanceName].offerCall(data);
10+
}
11+
}

src/api/dto/call.dto.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export class Metadata {
2+
number: string;
3+
}
4+
5+
export class OfferCallDto extends Metadata {
6+
isVideo?: boolean;
7+
callDuration?: number;
8+
}

src/api/dto/sendMessage.dto.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,6 @@ export class Metadata {
4646
encoding?: boolean;
4747
}
4848

49-
export class OfferCallDto extends Metadata {
50-
isVideo?: boolean;
51-
callDuration?: number;
52-
}
53-
5449
export class SendTextDto extends Metadata {
5550
text: string;
5651
}

src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { OfferCallDto } from '@api/dto/call.dto';
12
import {
23
ArchiveChatDto,
34
BlockUserDto,
@@ -32,7 +33,6 @@ import { HandleLabelDto, LabelDto } from '@api/dto/label.dto';
3233
import {
3334
ContactMessage,
3435
MediaMessage,
35-
OfferCallDto,
3636
Options,
3737
SendAudioDto,
3838
SendContactDto,
@@ -1671,14 +1671,12 @@ export class BaileysStartupService extends ChannelStartupService {
16711671
}
16721672
}
16731673

1674-
public async offerCall({ number, callDuration }: OfferCallDto) {
1674+
public async offerCall({ number, isVideo, callDuration }: OfferCallDto) {
16751675
const jid = this.createJid(number);
16761676

16771677
try {
1678-
const call = await this.client.offerCall(jid);
1679-
if (callDuration) {
1680-
setTimeout(() => this.client.terminateCall(call.id, call.to), callDuration * 1000);
1681-
}
1678+
const call = await this.client.offerCall(jid, isVideo);
1679+
setTimeout(() => this.client.terminateCall(call.id, call.to), callDuration * 1000);
16821680

16831681
return call;
16841682
} catch (error) {

src/api/routes/call.router.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { RouterBroker } from '@api/abstract/abstract.router';
2+
import { OfferCallDto } from '@api/dto/call.dto';
3+
import { sendMessageController } from '@api/server.module';
4+
import { offerCallSchema } from '@validate/validate.schema';
5+
import { RequestHandler, Router } from 'express';
6+
7+
import { HttpStatus } from './index.router';
8+
9+
export class CallRouter extends RouterBroker {
10+
constructor(...guards: RequestHandler[]) {
11+
super();
12+
this.router.post(this.routerPath('offer'), ...guards, async (req, res) => {
13+
const response = await this.dataValidate<OfferCallDto>({
14+
request: req,
15+
schema: offerCallSchema,
16+
ClassRef: OfferCallDto,
17+
execute: (instance, data) => sendMessageController.offerCall(instance, data),
18+
});
19+
20+
return res.status(HttpStatus.CREATED).json(response);
21+
});
22+
}
23+
24+
public readonly router: Router = Router();
25+
}

src/api/routes/index.router.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import fs from 'fs';
1111
import mime from 'mime';
1212
import path from 'path';
1313

14+
import { CallRouter } from './call.router';
1415
import { ChatRouter } from './chat.router';
1516
import { GroupRouter } from './group.router';
1617
import { InstanceRouter } from './instance.router';
@@ -79,6 +80,7 @@ router
7980
})
8081
.use('/instance', new InstanceRouter(configService, ...guards).router)
8182
.use('/message', new MessageRouter(...guards).router)
83+
.use('/call', new CallRouter(...guards).router)
8284
.use('/chat', new ChatRouter(...guards).router)
8385
.use('/group', new GroupRouter(...guards).router)
8486
.use('/template', new TemplateRouter(configService, ...guards).router)

src/api/routes/sendMessage.router.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { RouterBroker } from '@api/abstract/abstract.router';
22
import {
3-
OfferCallDto,
43
SendAudioDto,
54
SendButtonDto,
65
SendContactDto,
@@ -22,7 +21,6 @@ import {
2221
listMessageSchema,
2322
locationMessageSchema,
2423
mediaMessageSchema,
25-
offerCallSchema,
2624
pollMessageSchema,
2725
reactionMessageSchema,
2826
statusMessageSchema,
@@ -168,16 +166,6 @@ export class MessageRouter extends RouterBroker {
168166
execute: (instance, data) => sendMessageController.sendButtons(instance, data),
169167
});
170168

171-
return res.status(HttpStatus.CREATED).json(response);
172-
})
173-
.post(this.routerPath('offerCall'), ...guards, async (req, res) => {
174-
const response = await this.dataValidate<OfferCallDto>({
175-
request: req,
176-
schema: offerCallSchema,
177-
ClassRef: OfferCallDto,
178-
execute: (instance, data) => sendMessageController.offerCall(instance, data),
179-
});
180-
181169
return res.status(HttpStatus.CREATED).json(response);
182170
});
183171
}

0 commit comments

Comments
 (0)