Add Heii On-Call

This commit is contained in:
Humberto Evans
2024-02-12 15:58:54 -08:00
parent 56aa81e337
commit 93ac212aef
6 changed files with 283 additions and 89 deletions

View File

@@ -16,6 +16,7 @@ const Gorush = require("./notification-providers/gorush");
const Gotify = require("./notification-providers/gotify");
const GrafanaOncall = require("./notification-providers/grafana-oncall");
const HomeAssistant = require("./notification-providers/home-assistant");
const HeiiOnCall = require("./notification-providers/heii-oncall");
const Kook = require("./notification-providers/kook");
const Line = require("./notification-providers/line");
const LineNotify = require("./notification-providers/linenotify");
@@ -56,7 +57,6 @@ const ServerChan = require("./notification-providers/serverchan");
const ZohoCliq = require("./notification-providers/zoho-cliq");
class Notification {
providerList = {};
/**
@@ -87,6 +87,7 @@ class Notification {
new Gotify(),
new GrafanaOncall(),
new HomeAssistant(),
new HeiiOnCall(),
new Kook(),
new Line(),
new LineNotify(),
@@ -124,10 +125,10 @@ class Notification {
new Webhook(),
new WeCom(),
new GoAlert(),
new ZohoCliq()
new ZohoCliq(),
];
for (let item of list) {
if (! item.name) {
if (!item.name) {
throw new Error("Notification provider without name");
}
@@ -147,9 +148,19 @@ class Notification {
* @returns {Promise<string>} Successful msg
* @throws Error with fail msg
*/
static async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
static async send(
notification,
msg,
monitorJSON = null,
heartbeatJSON = null
) {
if (this.providerList[notification.type]) {
return this.providerList[notification.type].send(notification, msg, monitorJSON, heartbeatJSON);
return this.providerList[notification.type].send(
notification,
msg,
monitorJSON,
heartbeatJSON
);
} else {
throw new Error("Notification type is not supported");
}
@@ -171,10 +182,9 @@ class Notification {
userID,
]);
if (! bean) {
if (!bean) {
throw new Error("notification not found");
}
} else {
bean = R.dispense("notification");
}
@@ -204,7 +214,7 @@ class Notification {
userID,
]);
if (! bean) {
if (!bean) {
throw new Error("notification not found");
}
@@ -220,7 +230,6 @@ class Notification {
let exists = commandExistsSync("apprise");
return exists;
}
}
/**
@@ -231,16 +240,17 @@ class Notification {
*/
async function applyNotificationEveryMonitor(notificationID, userID) {
let monitors = await R.getAll("SELECT id FROM monitor WHERE user_id = ?", [
userID
userID,
]);
for (let i = 0; i < monitors.length; i++) {
let checkNotification = await R.findOne("monitor_notification", " monitor_id = ? AND notification_id = ? ", [
monitors[i].id,
notificationID,
]);
let checkNotification = await R.findOne(
"monitor_notification",
" monitor_id = ? AND notification_id = ? ",
[monitors[i].id, notificationID]
);
if (! checkNotification) {
if (!checkNotification) {
let relation = R.dispense("monitor_notification");
relation.monitor_id = monitors[i].id;
relation.notification_id = notificationID;