UNPKG

@davidbolaji/termii-node

Version:

Node.js SDK for Termii API – send SMS, voice, OTP, and manage messaging with ease.

144 lines (143 loc) 4.86 kB
import { TokenService } from './endpoints'; import { HttpClient } from './http/HttpClient'; import { InsightService } from './services/insights/InsightService'; import { CampaignService } from './services/messaging/campaign/CampaignService'; import { MessageService } from './services/messaging/MessageService'; import { SenderIdService } from './services/messaging/SenderIdService'; import { TemplatesService } from './services/messaging/TemplateService'; import { SotelService } from './services/sotel/SotelService'; export class Termii { constructor(apiKey, baseUrl) { this.http = new HttpClient({ apiKey, baseURL: baseUrl }); this.message = new MessageService(this.http); this.sender = new SenderIdService(this.http); this.template = new TemplatesService(this.http); this.campaign = new CampaignService(this.http); this.insight = new InsightService(this.http); this.sotel = new SotelService(this.http); this.token = new TokenService(this.http); return new Proxy(this, { get(target, prop, receiver) { if (prop in target) { return Reflect.get(target, prop, receiver); } const services = [ target.message, target.sender, target.template, target.campaign, target.insight, target.sotel, target.token, ]; for (const service of services) { if (service && prop in service) { const value = service[prop]; return typeof value === 'function' ? value.bind(service) : value; } } return undefined; }, }); } // ---------- Explicit Method Forwarding ---------- // Messaging sendMessage(payload) { return this.message.sendMessage(payload); } sendBulkMessage(payload) { return this.message.sendBulkMessage(payload); } // Templates sendTemplate(payload) { return this.template.sendTemplate(payload); } // Campaigns sendCampaign(payload) { return this.campaign.campaign.sendCampaign(payload); } fetchCampaigns() { return this.campaign.campaign.fetchCampaigns(); } fetchCampaignHistory(campaignId) { return this.campaign.campaign.fetchCampaignHistory(campaignId); } retryCampaign(campaignId) { return this.campaign.campaign.retryCampaign(campaignId); } // Contacts fetchContacts(phonebookId) { return this.campaign.contact.fetchContacts(phonebookId); } addContact(phonebookId, contact) { return this.campaign.contact.addContact(phonebookId, contact); } uploadContacts(request) { return this.campaign.contact.uploadContacts(request); } deleteContact(contactId) { return this.campaign.contact.deleteContact(contactId); } // Phonebooks fetchPhonebooks() { return this.campaign.phonebook.fetchPhonebooks(); } createPhonebook(payload) { return this.campaign.phonebook.createPhonebook(payload); } updatePhonebook(phonebookId, payload) { return this.campaign.phonebook.updatePhonebook(phonebookId, payload); } deletePhonebook(phonebookId) { return this.campaign.phonebook.deletePhonebook(phonebookId); } // Sender IDs fetchSenderIds(page) { return this.sender.fetchSenderIds(page); } requestSenderId(payload) { return this.sender.requestSenderId(payload); } // Token sendToken(payload) { return this.token.sendToken(payload); } sendVoiceToken(payload) { return this.token.sendVoiceToken(payload); } sendVoiceCall(payload) { return this.token.sendVoiceCall(payload); } sendEmailToken(payload) { return this.token.email.sendEmailToken(payload); } generateToken(payload) { return this.token.inApp.generate(payload); } verifyToken(payload) { return this.token.verify.verifyToken(payload); } // Insights getBalance() { return this.insight.balance.getBalance(); } // Sotel / eSIM authenticateEsim(payload) { return this.sotel.esim.authenticate(payload); } fetchEsimPlans(payload) { return this.sotel.esim.fetchPlans(payload); } createEsim(payload) { return this.sotel.esim.createEsim(payload); } getEsimQrCode(iccid) { return this.sotel.esim.getQrCode(iccid); } getEsimUsage(iccid) { return this.sotel.esim.getUsage(iccid); } fetchEsims(page, size) { return this.sotel.esim.fetchEsims(page, size); } }