Team Ai
Apppublic

oex2003/evolution-api

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
event.manager.ts183 linesDownload Raw Back to event
1import { NatsController } from '@api/integrations/event/nats/nats.controller';2import { PusherController } from '@api/integrations/event/pusher/pusher.controller';3import { RabbitmqController } from '@api/integrations/event/rabbitmq/rabbitmq.controller';4import { SqsController } from '@api/integrations/event/sqs/sqs.controller';5import { WebhookController } from '@api/integrations/event/webhook/webhook.controller';6import { WebsocketController } from '@api/integrations/event/websocket/websocket.controller';7import { PrismaRepository } from '@api/repository/repository.service';8import { WAMonitoringService } from '@api/services/monitor.service';9import { Server } from 'http';10 11export class EventManager {12  private prismaRepository: PrismaRepository;13  private waMonitor: WAMonitoringService;14  private websocketController: WebsocketController;15  private webhookController: WebhookController;16  private rabbitmqController: RabbitmqController;17  private natsController: NatsController;18  private sqsController: SqsController;19  private pusherController: PusherController;20 21  constructor(prismaRepository: PrismaRepository, waMonitor: WAMonitoringService) {22    this.prisma = prismaRepository;23    this.monitor = waMonitor;24 25    this.websocket = new WebsocketController(prismaRepository, waMonitor);26    this.webhook = new WebhookController(prismaRepository, waMonitor);27    this.rabbitmq = new RabbitmqController(prismaRepository, waMonitor);28    this.nats = new NatsController(prismaRepository, waMonitor);29    this.sqs = new SqsController(prismaRepository, waMonitor);30    this.pusher = new PusherController(prismaRepository, waMonitor);31  }32 33  public set prisma(prisma: PrismaRepository) {34    this.prismaRepository = prisma;35  }36 37  public get prisma() {38    return this.prismaRepository;39  }40 41  public set monitor(waMonitor: WAMonitoringService) {42    this.waMonitor = waMonitor;43  }44 45  public get monitor() {46    return this.waMonitor;47  }48 49  public set websocket(websocket: WebsocketController) {50    this.websocketController = websocket;51  }52 53  public get websocket() {54    return this.websocketController;55  }56 57  public set webhook(webhook: WebhookController) {58    this.webhookController = webhook;59  }60 61  public get webhook() {62    return this.webhookController;63  }64 65  public set rabbitmq(rabbitmq: RabbitmqController) {66    this.rabbitmqController = rabbitmq;67  }68 69  public get rabbitmq() {70    return this.rabbitmqController;71  }72 73  public set nats(nats: NatsController) {74    this.natsController = nats;75  }76 77  public get nats() {78    return this.natsController;79  }80 81  public set sqs(sqs: SqsController) {82    this.sqsController = sqs;83  }84 85  public get sqs() {86    return this.sqsController;87  }88 89  public set pusher(pusher: PusherController) {90    this.pusherController = pusher;91  }92  public get pusher() {93    return this.pusherController;94  }95 96  public init(httpServer: Server): void {97    this.websocket.init(httpServer);98    this.rabbitmq.init();99    this.nats.init();100    this.sqs.init();101    this.pusher.init();102  }103 104  public async emit(eventData: {105    instanceName: string;106    origin: string;107    event: string;108    data: Object;109    serverUrl: string;110    dateTime: string;111    sender: string;112    apiKey?: string;113    local?: boolean;114    integration?: string[];115  }): Promise<void> {116    await this.websocket.emit(eventData);117    await this.rabbitmq.emit(eventData);118    await this.nats.emit(eventData);119    await this.sqs.emit(eventData);120    await this.webhook.emit(eventData);121    await this.pusher.emit(eventData);122  }123 124  public async setInstance(instanceName: string, data: any): Promise<any> {125    if (data.websocket)126      await this.websocket.set(instanceName, {127        websocket: {128          enabled: true,129          events: data.websocket?.events,130        },131      });132 133    if (data.rabbitmq)134      await this.rabbitmq.set(instanceName, {135        rabbitmq: {136          enabled: true,137          events: data.rabbitmq?.events,138        },139      });140 141    if (data.nats)142      await this.nats.set(instanceName, {143        nats: {144          enabled: true,145          events: data.nats?.events,146        },147      });148 149    if (data.sqs)150      await this.sqs.set(instanceName, {151        sqs: {152          enabled: true,153          events: data.sqs?.events,154        },155      });156 157    if (data.webhook)158      await this.webhook.set(instanceName, {159        webhook: {160          enabled: true,161          events: data.webhook?.events,162          url: data.webhook?.url,163          headers: data.webhook?.headers,164          base64: data.webhook?.base64,165          byEvents: data.webhook?.byEvents,166        },167      });168 169    if (data.pusher)170      await this.pusher.set(instanceName, {171        pusher: {172          enabled: true,173          events: data.pusher?.events,174          appId: data.pusher?.appId,175          key: data.pusher?.key,176          secret: data.pusher?.secret,177          cluster: data.pusher?.cluster,178          useTLS: data.pusher?.useTLS,179        },180      });181  }182}183