summaryrefslogtreecommitdiffstats
path: root/server/notification-providers/apprise.js
blob: 0f6982140f522a91f5012c310c24beeaa9a449dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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;