mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-12-23 21:57:45 -06:00
Simplify events structure and fix minor issues
This commit is contained in:
130
src/api/integrations/event/event.manager.ts
Normal file
130
src/api/integrations/event/event.manager.ts
Normal file
@@ -0,0 +1,130 @@
|
||||
import { RabbitmqController } from '@api/integrations/event/rabbitmq/rabbitmq.controller';
|
||||
import { SqsController } from '@api/integrations/event/sqs/sqs.controller';
|
||||
import { WebhookController } from '@api/integrations/event/webhook/webhook.controller';
|
||||
import { WebsocketController } from '@api/integrations/event/websocket/websocket.controller';
|
||||
import { PrismaRepository } from '@api/repository/repository.service';
|
||||
import { WAMonitoringService } from '@api/services/monitor.service';
|
||||
import { Server } from 'http';
|
||||
|
||||
export class EventManager {
|
||||
private prismaRepository: PrismaRepository;
|
||||
private waMonitor: WAMonitoringService;
|
||||
private websocketController: WebsocketController;
|
||||
private webhookController: WebhookController;
|
||||
private rabbitmqController: RabbitmqController;
|
||||
private sqsController: SqsController;
|
||||
|
||||
constructor(prismaRepository: PrismaRepository, waMonitor: WAMonitoringService) {
|
||||
this.prisma = prismaRepository;
|
||||
this.monitor = waMonitor;
|
||||
|
||||
this.websocket = new WebsocketController(prismaRepository, waMonitor);
|
||||
this.webhook = new WebhookController(prismaRepository, waMonitor);
|
||||
this.rabbitmq = new RabbitmqController(prismaRepository, waMonitor);
|
||||
this.sqs = new SqsController(prismaRepository, waMonitor);
|
||||
}
|
||||
|
||||
public set prisma(prisma: PrismaRepository) {
|
||||
this.prismaRepository = prisma;
|
||||
}
|
||||
|
||||
public get prisma() {
|
||||
return this.prismaRepository;
|
||||
}
|
||||
|
||||
public set monitor(waMonitor: WAMonitoringService) {
|
||||
this.waMonitor = waMonitor;
|
||||
}
|
||||
|
||||
public get monitor() {
|
||||
return this.waMonitor;
|
||||
}
|
||||
|
||||
public set websocket(websocket: WebsocketController) {
|
||||
this.websocketController = websocket;
|
||||
}
|
||||
|
||||
public get websocket() {
|
||||
return this.websocketController;
|
||||
}
|
||||
|
||||
public set webhook(webhook: WebhookController) {
|
||||
this.webhookController = webhook;
|
||||
}
|
||||
|
||||
public get webhook() {
|
||||
return this.webhookController;
|
||||
}
|
||||
|
||||
public set rabbitmq(rabbitmq: RabbitmqController) {
|
||||
this.rabbitmqController = rabbitmq;
|
||||
}
|
||||
|
||||
public get rabbitmq() {
|
||||
return this.rabbitmqController;
|
||||
}
|
||||
|
||||
public set sqs(sqs: SqsController) {
|
||||
this.sqsController = sqs;
|
||||
}
|
||||
|
||||
public get sqs() {
|
||||
return this.sqsController;
|
||||
}
|
||||
|
||||
public init(httpServer: Server): void {
|
||||
this.websocket.init(httpServer);
|
||||
this.rabbitmq.init();
|
||||
this.sqs.init();
|
||||
}
|
||||
|
||||
public async emit(eventData: {
|
||||
instanceName: string;
|
||||
origin: string;
|
||||
event: string;
|
||||
data: Object;
|
||||
serverUrl: string;
|
||||
dateTime: string;
|
||||
sender: string;
|
||||
apiKey?: string;
|
||||
local?: boolean;
|
||||
}): Promise<void> {
|
||||
await this.websocket.emit(eventData);
|
||||
await this.rabbitmq.emit(eventData);
|
||||
await this.sqs.emit(eventData);
|
||||
await this.webhook.emit(eventData);
|
||||
}
|
||||
|
||||
public async setInstance(instanceName: string, data: any): Promise<any> {
|
||||
await this.websocket.set(instanceName, {
|
||||
websocket: {
|
||||
enabled: data.websocket?.enabled,
|
||||
events: data.websocket?.events,
|
||||
},
|
||||
});
|
||||
|
||||
await this.rabbitmq.set(instanceName, {
|
||||
rabbitmq: {
|
||||
enabled: data.rabbitmq?.enabled,
|
||||
events: data.rabbitmq?.events,
|
||||
},
|
||||
});
|
||||
|
||||
await this.sqs.set(instanceName, {
|
||||
sqs: {
|
||||
enabled: data.sqs?.enabled,
|
||||
events: data.sqs?.events,
|
||||
},
|
||||
});
|
||||
|
||||
await this.webhook.set(instanceName, {
|
||||
webhook: {
|
||||
enabled: data.webhook?.enabled,
|
||||
events: data.webhook?.events,
|
||||
url: data.webhook.url,
|
||||
base64: data.webhook.base64,
|
||||
byEvents: data.webhook.byEvents,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user