mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-12-19 03:42:23 -06:00
239 lines
8.4 KiB
TypeScript
239 lines
8.4 KiB
TypeScript
import { RequestHandler, Router } from 'express';
|
|
import {
|
|
audioMessageSchema,
|
|
buttonMessageSchema,
|
|
contactMessageSchema,
|
|
linkPreviewSchema,
|
|
listMessageSchema,
|
|
locationMessageSchema,
|
|
mediaMessageSchema,
|
|
pollMessageSchema,
|
|
reactionMessageSchema,
|
|
statusMessageSchema,
|
|
stickerMessageSchema,
|
|
textMessageSchema,
|
|
} from '../../validate/validate.schema';
|
|
import {
|
|
SendAudioDto,
|
|
SendButtonDto,
|
|
SendContactDto,
|
|
SendLinkPreviewDto,
|
|
SendListDto,
|
|
SendLocationDto,
|
|
SendMediaDto,
|
|
SendPollDto,
|
|
SendReactionDto,
|
|
SendStatusDto,
|
|
SendStickerDto,
|
|
SendTextDto,
|
|
} from '../dto/sendMessage.dto';
|
|
import { sendMessageController } from '../whatsapp.module';
|
|
import { RouterBroker } from '../abstract/abstract.router';
|
|
import { HttpStatus } from './index.router';
|
|
import { Logger } from '../../config/logger.config';
|
|
|
|
const logger = new Logger('MessageRouter');
|
|
|
|
export class MessageRouter extends RouterBroker {
|
|
constructor(...guards: RequestHandler[]) {
|
|
super();
|
|
this.router
|
|
.post(this.routerPath('sendText'), ...guards, async (req, res) => {
|
|
logger.verbose('request received in sendText');
|
|
logger.verbose('request body: ');
|
|
logger.verbose(req.body);
|
|
|
|
logger.verbose('request query: ');
|
|
logger.verbose(req.query);
|
|
const response = await this.dataValidate<SendTextDto>({
|
|
request: req,
|
|
schema: textMessageSchema,
|
|
ClassRef: SendTextDto,
|
|
execute: (instance, data) => sendMessageController.sendText(instance, data),
|
|
});
|
|
|
|
return res.status(HttpStatus.CREATED).json(response);
|
|
})
|
|
.post(this.routerPath('sendMedia'), ...guards, async (req, res) => {
|
|
logger.verbose('request received in sendMedia');
|
|
logger.verbose('request body: ');
|
|
logger.verbose(req.body);
|
|
|
|
logger.verbose('request query: ');
|
|
logger.verbose(req.query);
|
|
const response = await this.dataValidate<SendMediaDto>({
|
|
request: req,
|
|
schema: mediaMessageSchema,
|
|
ClassRef: SendMediaDto,
|
|
execute: (instance, data) => sendMessageController.sendMedia(instance, data),
|
|
});
|
|
|
|
return res.status(HttpStatus.CREATED).json(response);
|
|
})
|
|
.post(this.routerPath('sendWhatsAppAudio'), ...guards, async (req, res) => {
|
|
logger.verbose('request received in sendWhatsAppAudio');
|
|
logger.verbose('request body: ');
|
|
logger.verbose(req.body);
|
|
|
|
logger.verbose('request query: ');
|
|
logger.verbose(req.query);
|
|
const response = await this.dataValidate<SendAudioDto>({
|
|
request: req,
|
|
schema: audioMessageSchema,
|
|
ClassRef: SendMediaDto,
|
|
execute: (instance, data) =>
|
|
sendMessageController.sendWhatsAppAudio(instance, data),
|
|
});
|
|
|
|
return res.status(HttpStatus.CREATED).json(response);
|
|
})
|
|
.post(this.routerPath('sendButtons'), ...guards, async (req, res) => {
|
|
logger.verbose('request received in sendButtons');
|
|
logger.verbose('request body: ');
|
|
logger.verbose(req.body);
|
|
|
|
logger.verbose('request query: ');
|
|
logger.verbose(req.query);
|
|
const response = await this.dataValidate<SendButtonDto>({
|
|
request: req,
|
|
schema: buttonMessageSchema,
|
|
ClassRef: SendButtonDto,
|
|
execute: (instance, data) => sendMessageController.sendButtons(instance, data),
|
|
});
|
|
|
|
return res.status(HttpStatus.CREATED).json(response);
|
|
})
|
|
.post(this.routerPath('sendLocation'), ...guards, async (req, res) => {
|
|
logger.verbose('request received in sendLocation');
|
|
logger.verbose('request body: ');
|
|
logger.verbose(req.body);
|
|
|
|
logger.verbose('request query: ');
|
|
logger.verbose(req.query);
|
|
const response = await this.dataValidate<SendLocationDto>({
|
|
request: req,
|
|
schema: locationMessageSchema,
|
|
ClassRef: SendLocationDto,
|
|
execute: (instance, data) => sendMessageController.sendLocation(instance, data),
|
|
});
|
|
|
|
return res.status(HttpStatus.CREATED).json(response);
|
|
})
|
|
.post(this.routerPath('sendList'), ...guards, async (req, res) => {
|
|
logger.verbose('request received in sendList');
|
|
logger.verbose('request body: ');
|
|
logger.verbose(req.body);
|
|
|
|
logger.verbose('request query: ');
|
|
logger.verbose(req.query);
|
|
const response = await this.dataValidate<SendListDto>({
|
|
request: req,
|
|
schema: listMessageSchema,
|
|
ClassRef: SendListDto,
|
|
execute: (instance, data) => sendMessageController.sendList(instance, data),
|
|
});
|
|
|
|
return res.status(HttpStatus.CREATED).json(response);
|
|
})
|
|
.post(this.routerPath('sendContact'), ...guards, async (req, res) => {
|
|
logger.verbose('request received in sendContact');
|
|
logger.verbose('request body: ');
|
|
logger.verbose(req.body);
|
|
|
|
logger.verbose('request query: ');
|
|
logger.verbose(req.query);
|
|
const response = await this.dataValidate<SendContactDto>({
|
|
request: req,
|
|
schema: contactMessageSchema,
|
|
ClassRef: SendContactDto,
|
|
execute: (instance, data) => sendMessageController.sendContact(instance, data),
|
|
});
|
|
|
|
return res.status(HttpStatus.CREATED).json(response);
|
|
})
|
|
.post(this.routerPath('sendReaction'), ...guards, async (req, res) => {
|
|
logger.verbose('request received in sendReaction');
|
|
logger.verbose('request body: ');
|
|
logger.verbose(req.body);
|
|
|
|
logger.verbose('request query: ');
|
|
logger.verbose(req.query);
|
|
const response = await this.dataValidate<SendReactionDto>({
|
|
request: req,
|
|
schema: reactionMessageSchema,
|
|
ClassRef: SendReactionDto,
|
|
execute: (instance, data) => sendMessageController.sendReaction(instance, data),
|
|
});
|
|
|
|
return res.status(HttpStatus.CREATED).json(response);
|
|
})
|
|
.post(this.routerPath('sendPoll'), ...guards, async (req, res) => {
|
|
logger.verbose('request received in sendPoll');
|
|
logger.verbose('request body: ');
|
|
logger.verbose(req.body);
|
|
|
|
logger.verbose('request query: ');
|
|
logger.verbose(req.query);
|
|
const response = await this.dataValidate<SendPollDto>({
|
|
request: req,
|
|
schema: pollMessageSchema,
|
|
ClassRef: SendPollDto,
|
|
execute: (instance, data) => sendMessageController.sendPoll(instance, data),
|
|
});
|
|
|
|
return res.status(HttpStatus.CREATED).json(response);
|
|
})
|
|
.post(this.routerPath('sendStatus'), ...guards, async (req, res) => {
|
|
logger.verbose('request received in sendStatus');
|
|
logger.verbose('request body: ');
|
|
logger.verbose(req.body);
|
|
|
|
logger.verbose('request query: ');
|
|
logger.verbose(req.query);
|
|
const response = await this.dataValidate<SendStatusDto>({
|
|
request: req,
|
|
schema: statusMessageSchema,
|
|
ClassRef: SendStatusDto,
|
|
execute: (instance, data) => sendMessageController.sendStatus(instance, data),
|
|
});
|
|
|
|
return res.status(HttpStatus.CREATED).json(response);
|
|
})
|
|
.post(this.routerPath('sendLinkPreview'), ...guards, async (req, res) => {
|
|
logger.verbose('request received in sendLinkPreview');
|
|
logger.verbose('request body: ');
|
|
logger.verbose(req.body);
|
|
|
|
logger.verbose('request query: ');
|
|
logger.verbose(req.query);
|
|
const response = await this.dataValidate<SendLinkPreviewDto>({
|
|
request: req,
|
|
schema: linkPreviewSchema,
|
|
ClassRef: SendLinkPreviewDto,
|
|
execute: (instance, data) =>
|
|
sendMessageController.sendLinkPreview(instance, data),
|
|
});
|
|
|
|
return res.status(HttpStatus.CREATED).json(response);
|
|
})
|
|
.post(this.routerPath('sendSticker'), ...guards, async (req, res) => {
|
|
logger.verbose('request received in sendSticker');
|
|
logger.verbose('request body: ');
|
|
logger.verbose(req.body);
|
|
|
|
logger.verbose('request query: ');
|
|
logger.verbose(req.query);
|
|
const response = await this.dataValidate<SendStickerDto>({
|
|
request: req,
|
|
schema: stickerMessageSchema,
|
|
ClassRef: SendStickerDto,
|
|
execute: (instance, data) => sendMessageController.sendSticker(instance, data),
|
|
});
|
|
|
|
return res.status(HttpStatus.CREATED).json(response);
|
|
});
|
|
}
|
|
|
|
public readonly router = Router();
|
|
}
|