diff options
Diffstat (limited to 'server/notification-providers/apprise.js')
-rw-r--r-- | server/notification-providers/apprise.js | 37 |
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; |