summaryrefslogtreecommitdiffstats
path: root/server/notification-providers/squadcast.js
blob: 5713783c0bee7d95aa80a75d307e27f8459fc59f (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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
const NotificationProvider = require("./notification-provider");
const axios = require("axios");
const { DOWN } = require("../../src/util");

class Squadcast extends NotificationProvider {
    name = "squadcast";

    /**
     * @inheritdoc
     */
    async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
        const okMsg = "Sent Successfully.";

        try {

            let config = {};
            let data = {
                message: msg,
                description: "",
                tags: {},
                heartbeat: heartbeatJSON,
                source: "uptime-kuma"
            };

            if (heartbeatJSON !== null) {
                data.description = heartbeatJSON["msg"];
                data.event_id = heartbeatJSON["monitorID"];

                if (heartbeatJSON["status"] === DOWN) {
                    data.message = `${monitorJSON["name"]} is DOWN`;
                    data.status = "trigger";
                } else {
                    data.message = `${monitorJSON["name"]} is UP`;
                    data.status = "resolve";
                }

                data.tags["AlertAddress"] = this.extractAddress(monitorJSON);

                monitorJSON["tags"].forEach(tag => {
                    data.tags[tag["name"]] = {
                        value: tag["value"]
                    };
                    if (tag["color"] !== null) {
                        data.tags[tag["name"]]["color"] = tag["color"];
                    }
                });
            }

            await axios.post(notification.squadcastWebhookURL, data, config);
            return okMsg;

        } catch (error) {
            this.throwGeneralAxiosError(error);
        }

    }

}

module.exports = Squadcast;