@davidbolaji/termii-node
Version:
Node.js SDK for Termii API – send SMS, voice, OTP, and manage messaging with ease.
148 lines (147 loc) • 5.13 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Termii = void 0;
const endpoints_1 = require("./endpoints");
const HttpClient_1 = require("./http/HttpClient");
const InsightService_1 = require("./services/insights/InsightService");
const CampaignService_1 = require("./services/messaging/campaign/CampaignService");
const MessageService_1 = require("./services/messaging/MessageService");
const SenderIdService_1 = require("./services/messaging/SenderIdService");
const TemplateService_1 = require("./services/messaging/TemplateService");
const SotelService_1 = require("./services/sotel/SotelService");
class Termii {
constructor(apiKey, baseUrl) {
this.http = new HttpClient_1.HttpClient({ apiKey, baseURL: baseUrl });
this.message = new MessageService_1.MessageService(this.http);
this.sender = new SenderIdService_1.SenderIdService(this.http);
this.template = new TemplateService_1.TemplatesService(this.http);
this.campaign = new CampaignService_1.CampaignService(this.http);
this.insight = new InsightService_1.InsightService(this.http);
this.sotel = new SotelService_1.SotelService(this.http);
this.token = new endpoints_1.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);
}
}
exports.Termii = Termii;