Repository: louislam/uptime-kuma
File: server/notification-providers/grafana-oncall.js (JavaScript)

Code before:
            // If heartbeatJSON is null, assume we're testing.
            if (heartbeatJSON == null) {
                let GrafanaOncallTestData = {
                    title: "This is a test",
                    message: msg,
                    state: "alerting",
                };
                await axios.post(notification.grafanaoncallURL, GrafanaOncallTestData);
                return okMsg;
            }

            if (heartbeatJSON["status"] === DOWN) {
                let grafanadowndata = {
                    title: monitorJSON["name"] + " is down",
                    message: heartbeatJSON["msg"],
                };
                await axios.post(
                    notification.grafanaoncallURL,
                    grafanadowndata
                );
                return okMsg;
            } else if (heartbeatJSON["status"] === UP) {
                let grafanaupdata = {
                    title: monitorJSON["name"] + " is up",
                    message: heartbeatJSON["msg"],
                    alert_uid: "",
                    state: "ok",
                };
                await axios.post(
                    notification.grafanaoncallURL,
                    grafanaupdata
                );
                return okMsg;
            }
        } catch (error) {
            this.throwGeneralAxiosError(error);
        }

    }
}

module.exports = GrafanaOncall;


Review comment (suggestion):
Is there any point in including this, given that it is just an empty string and the docs seem to indicate that it is not required?
```suggestion
```

Code after:

        if (!notification.GrafanaOncallURL) {
            throw new Error("GrafanaOncallURL cannot be empty");
        }

        let okMsg = "Sent Successfully.";
        try {
            if (heartbeatJSON === null) {
                let grafanaupdata = {
                    title: "General notification",
                    message: msg,
                    state: "alerting",
                };
                await axios.post(
                    notification.GrafanaOncallURL,
                    grafanaupdata
                );
                return okMsg;
            } else if (heartbeatJSON["status"] === DOWN) {
                let grafanadowndata = {
                    title: monitorJSON["name"] + " is down",
                    message: heartbeatJSON["msg"],
                    state: "alerting",
                };
                await axios.post(
                    notification.GrafanaOncallURL,
                    grafanadowndata
                );
                return okMsg;
            } else if (heartbeatJSON["status"] === UP) {
                let grafanaupdata = {
                    title: monitorJSON["name"] + " is up",
                    message: heartbeatJSON["msg"],
                    state: "ok",
                };
                await axios.post(
                    notification.GrafanaOncallURL,
                    grafanaupdata
                );
                return okMsg;
            }
        } catch (error) {
            this.throwGeneralAxiosError(error);
        }

    }
}

module.exports = GrafanaOncall;