Team Ai
Apppublic

oex2003/evolution-api

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
channel.controller.ts96 linesDownload Raw Back to channel
1import { InstanceDto } from '@api/dto/instance.dto';2import { ProviderFiles } from '@api/provider/sessions';3import { PrismaRepository } from '@api/repository/repository.service';4import { CacheService } from '@api/services/cache.service';5import { WAMonitoringService } from '@api/services/monitor.service';6import { Integration } from '@api/types/wa.types';7import { ConfigService } from '@config/env.config';8import { BadRequestException } from '@exceptions';9import EventEmitter2 from 'eventemitter2';10 11import { EvolutionStartupService } from './evolution/evolution.channel.service';12import { BusinessStartupService } from './meta/whatsapp.business.service';13import { BaileysStartupService } from './whatsapp/whatsapp.baileys.service';14 15type ChannelDataType = {16  configService: ConfigService;17  eventEmitter: EventEmitter2;18  prismaRepository: PrismaRepository;19  cache: CacheService;20  chatwootCache: CacheService;21  baileysCache: CacheService;22  providerFiles: ProviderFiles;23};24 25export interface ChannelControllerInterface {26  receiveWebhook(data: any): Promise<any>;27}28 29export class ChannelController {30  public prismaRepository: PrismaRepository;31  public waMonitor: WAMonitoringService;32 33  constructor(prismaRepository: PrismaRepository, waMonitor: WAMonitoringService) {34    this.prisma = prismaRepository;35    this.monitor = waMonitor;36  }37 38  public set prisma(prisma: PrismaRepository) {39    this.prismaRepository = prisma;40  }41 42  public get prisma() {43    return this.prismaRepository;44  }45 46  public set monitor(waMonitor: WAMonitoringService) {47    this.waMonitor = waMonitor;48  }49 50  public get monitor() {51    return this.waMonitor;52  }53 54  public init(instanceData: InstanceDto, data: ChannelDataType) {55    if (!instanceData.token && instanceData.integration === Integration.WHATSAPP_BUSINESS) {56      throw new BadRequestException('token is required');57    }58 59    if (instanceData.integration === Integration.WHATSAPP_BUSINESS) {60      return new BusinessStartupService(61        data.configService,62        data.eventEmitter,63        data.prismaRepository,64        data.cache,65        data.chatwootCache,66        data.baileysCache,67        data.providerFiles,68      );69    }70 71    if (instanceData.integration === Integration.EVOLUTION) {72      return new EvolutionStartupService(73        data.configService,74        data.eventEmitter,75        data.prismaRepository,76        data.cache,77        data.chatwootCache,78      );79    }80 81    if (instanceData.integration === Integration.WHATSAPP_BAILEYS) {82      return new BaileysStartupService(83        data.configService,84        data.eventEmitter,85        data.prismaRepository,86        data.cache,87        data.chatwootCache,88        data.baileysCache,89        data.providerFiles,90      );91    }92 93    return null;94  }95}96