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
JavaScript
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 }