summaryrefslogtreecommitdiffstats
path: root/server/notification-providers/apprise.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/notification-providers/apprise.js')
-rw-r--r--server/notification-providers/apprise.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/server/notification-providers/apprise.js b/server/notification-providers/apprise.js
new file mode 100644
index 0000000..0f69821
--- /dev/null
+++ b/server/notification-providers/apprise.js
@@ -0,0 +1,37 @@
+const NotificationProvider = require("./notification-provider");
+const childProcessAsync = require("promisify-child-process");
+
+class Apprise extends NotificationProvider {
+ name = "apprise";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+
+ const args = [ "-vv", "-b", msg, notification.appriseURL ];
+ if (notification.title) {
+ args.push("-t");
+ args.push(notification.title);
+ }
+ const s = await childProcessAsync.spawn("apprise", args, {
+ encoding: "utf8",
+ });
+
+ const output = (s.stdout) ? s.stdout.toString() : "ERROR: maybe apprise not found";
+
+ if (output) {
+
+ if (! output.includes("ERROR")) {
+ return okMsg;
+ }
+
+ throw new Error(output);
+ } else {
+ return "No output from apprise";
+ }
+ }
+}
+
+module.exports = Apprise;