UNPKG

smsir-facade

Version:

A Facade for SMS.iR's API. Not affiliated, managed, or sponsored by SMS.iR.

82 lines (68 loc) 1.69 kB
const axios = require("axios") const { SMSIRStatusCode } = require("./status") const DEFAULT_SMSIR_BASE_URL = "https://api.sms.ir/v1" class SMSIR { baseURL client constructor(apiKey) { this.baseURL = DEFAULT_SMSIR_BASE_URL this.client = axios.create({ baseURL: this.baseURL, headers: { "ACCEPT": "application/json", "X-API-KEY": apiKey }, validateStatus: () => true // We don't care because status is give n through the SMSIRResponse.status }) } async bulkSend(line, text, phones, sendDate) { const res = await this.client.post( "/send/bulk", { lineNumber: line, messageText: text, mobiles: phones, sendDateTime: sendDate } ) return res.data } async bulkSendLikeToLike(line, text, phones, sendDate) { const res = await this.client.post( "/send/likeToLike", { lineNumber: line, messageTexts: text, mobiles: phones, sendDateTime: sendDate } ) return res.data } async sendTemplate(template, phone, params) { const res = await this.client.post( "/send/verify", { mobile: phone, templateId: template, parameters: Object.keys(params).map(key => { return { name: key, value: params[key] } // https://app.sms.ir/developer/help/verify }) } ) return res.data } async fetchBalance() { const res = await this.client.get( "/credit" ) return res.data } async fetchLines() { const res = await this.client.get( "/line" ) return res.data } } module.exports = { SMSIR, SMSIRStatusCode }