|
|
|
@ -5,6 +5,12 @@ const { DOWN, UP } = require("../../src/util");
|
|
|
|
|
class Teams extends NotificationProvider {
|
|
|
|
|
name = "teams";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Generate the message to send
|
|
|
|
|
* @param {const} status The status constant
|
|
|
|
|
* @param {string} monitorName Name of monitor
|
|
|
|
|
* @returns {string}
|
|
|
|
|
*/
|
|
|
|
|
_statusMessageFactory = (status, monitorName) => {
|
|
|
|
|
if (status === DOWN) {
|
|
|
|
|
return `🔴 Application [${monitorName}] went down`;
|
|
|
|
@ -14,6 +20,11 @@ class Teams extends NotificationProvider {
|
|
|
|
|
return "Notification";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Select theme color to use based on status
|
|
|
|
|
* @param {const} status The status constant
|
|
|
|
|
* @returns {string} Selected color in hex RGB format
|
|
|
|
|
*/
|
|
|
|
|
_getThemeColor = (status) => {
|
|
|
|
|
if (status === DOWN) {
|
|
|
|
|
return "ff0000";
|
|
|
|
@ -24,6 +35,14 @@ class Teams extends NotificationProvider {
|
|
|
|
|
return "008cff";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Generate payload for notification
|
|
|
|
|
* @param {const} status The status of the monitor
|
|
|
|
|
* @param {string} monitorMessage Message to send
|
|
|
|
|
* @param {string} monitorName Name of monitor affected
|
|
|
|
|
* @param {string} monitorUrl URL of monitor affected
|
|
|
|
|
* @returns {Object}
|
|
|
|
|
*/
|
|
|
|
|
_notificationPayloadFactory = ({
|
|
|
|
|
status,
|
|
|
|
|
monitorMessage,
|
|
|
|
@ -74,10 +93,21 @@ class Teams extends NotificationProvider {
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Send the notification
|
|
|
|
|
* @param {string} webhookUrl URL to send the request to
|
|
|
|
|
* @param {Object} payload Payload generated by _notificationPayloadFactory
|
|
|
|
|
*/
|
|
|
|
|
_sendNotification = async (webhookUrl, payload) => {
|
|
|
|
|
await axios.post(webhookUrl, payload);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Send a general notification
|
|
|
|
|
* @param {string} webhookUrl URL to send request to
|
|
|
|
|
* @param {string} msg Message to send
|
|
|
|
|
* @returns {Promise<void>}
|
|
|
|
|
*/
|
|
|
|
|
_handleGeneralNotification = (webhookUrl, msg) => {
|
|
|
|
|
const payload = this._notificationPayloadFactory({
|
|
|
|
|
monitorMessage: msg
|
|
|
|
|