import { Injectable, Logger, OnModuleInit } from "@nestjs/common"; import { KavenegarSmsGateway } from "./kavenegar-sms.gateway"; import { ParsianSmsGateway } from "./parsian-sms.gateway"; import { getSmsProvider } from "./sms-provider.config"; import { SendMessage, VerifyLookUpMessage } from "./sms-gateway.types"; export type { SendMessage, VerifyLookUpMessage } from "./sms-gateway.types"; @Injectable() export class SmsGatewayService implements OnModuleInit { private readonly logger = new Logger(SmsGatewayService.name); constructor( private readonly kavenegar: KavenegarSmsGateway, private readonly parsian: ParsianSmsGateway, ) {} onModuleInit() { this.logger.log(`SMS provider active: ${getSmsProvider()}`); } async sendMessage(data: SendMessage) { return this.activeGateway().sendMessage(data); } async verifyLookUp(data: VerifyLookUpMessage) { return this.activeGateway().verifyLookUp(data); } private activeGateway(): KavenegarSmsGateway | ParsianSmsGateway { return getSmsProvider() === "parsian" ? this.parsian : this.kavenegar; } }