• apprise.js
  • 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;