mirror of
https://github.com/louislam/uptime-kuma.git
synced 2024-12-21 09:33:55 +03:00
63e408f4f2
The octopush legacy API does not return a HTTP error code and instead always returns a HTTP 200. This means that no error it thrown even if something like the parameters are incorrect. Instead the error code is given in the json response data. Therefore we must look at the response data and check for the presence of the "error_code" key in the response data. Signed-off-by: Matthew Nickson <mnickson@sidingsmedia.com>
70 lines
2.7 KiB
JavaScript
70 lines
2.7 KiB
JavaScript
const NotificationProvider = require("./notification-provider");
|
|
const axios = require("axios");
|
|
|
|
class Octopush extends NotificationProvider {
|
|
|
|
name = "octopush";
|
|
|
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
|
let okMsg = "Sent Successfully.";
|
|
|
|
try {
|
|
// Default - V2
|
|
if (notification.octopushVersion === "2" || !notification.octopushVersion) {
|
|
let config = {
|
|
headers: {
|
|
"api-key": notification.octopushAPIKey,
|
|
"api-login": notification.octopushLogin,
|
|
"cache-control": "no-cache"
|
|
}
|
|
};
|
|
let data = {
|
|
"recipients": [
|
|
{
|
|
"phone_number": notification.octopushPhoneNumber
|
|
}
|
|
],
|
|
//octopush not supporting non ascii char
|
|
"text": msg.replace(/[^\x00-\x7F]/g, ""),
|
|
"type": notification.octopushSMSType,
|
|
"purpose": "alert",
|
|
"sender": notification.octopushSenderName
|
|
};
|
|
await axios.post("https://api.octopush.com/v1/public/sms-campaign/send", data, config);
|
|
} else if (notification.octopushVersion === "1") {
|
|
let data = {
|
|
"user_login": notification.octopushDMLogin,
|
|
"api_key": notification.octopushDMAPIKey,
|
|
"sms_recipients": notification.octopushDMPhoneNumber,
|
|
"sms_sender": notification.octopushDMSenderName,
|
|
"sms_type": (notification.octopushDMSMSType === "sms_premium") ? "FR" : "XXX",
|
|
"transactional": "1",
|
|
//octopush not supporting non ascii char
|
|
"sms_text": msg.replace(/[^\x00-\x7F]/g, ""),
|
|
};
|
|
|
|
let config = {
|
|
headers: {
|
|
"cache-control": "no-cache"
|
|
},
|
|
params: data
|
|
};
|
|
|
|
// V1 API returns 200 even on error so we must check
|
|
// response data
|
|
let response = await axios.post("https://www.octopush-dm.com/api/sms/json", {}, config);
|
|
if ("error_code" in response.data) {
|
|
this.throwGeneralAxiosError(`Octopush error ${JSON.stringify(response.data)}`);
|
|
}
|
|
} else {
|
|
throw new Error("Unknown Octopush version!");
|
|
}
|
|
|
|
return okMsg;
|
|
} catch (error) {
|
|
this.throwGeneralAxiosError(error);
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = Octopush;
|