uptime-kuma/server/notification-providers/line.js

67 lines
2.5 KiB
JavaScript
Raw Normal View History

2021-09-07 07:42:46 -07:00
const NotificationProvider = require("./notification-provider");
const axios = require("axios");
const { DOWN, UP } = require("../../src/util");
class Line extends NotificationProvider {
name = "line";
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
2021-10-05 12:40:59 -07:00
let okMsg = "Sent Successfully.";
2021-09-07 07:42:46 -07:00
try {
let lineAPIUrl = "https://api.line.me/v2/bot/message/push";
let config = {
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + notification.lineChannelAccessToken
}
};
if (heartbeatJSON == null) {
let testMessage = {
"to": notification.lineUserID,
"messages": [
{
"type": "text",
"text": "Test Successful!"
}
]
2022-04-13 09:30:32 -07:00
};
await axios.post(lineAPIUrl, testMessage, config);
2022-04-17 00:43:03 -07:00
} else if (heartbeatJSON["status"] === DOWN) {
2021-09-07 07:42:46 -07:00
let downMessage = {
"to": notification.lineUserID,
"messages": [
{
"type": "text",
"text": "UptimeKuma Alert: [🔴 Down]\n" +
"Name: " + monitorJSON["name"] + " \n" +
heartbeatJSON["msg"] +
`\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
2021-09-07 07:42:46 -07:00
}
]
2022-04-13 09:30:32 -07:00
};
await axios.post(lineAPIUrl, downMessage, config);
2022-04-17 00:43:03 -07:00
} else if (heartbeatJSON["status"] === UP) {
2021-09-07 07:42:46 -07:00
let upMessage = {
"to": notification.lineUserID,
"messages": [
{
"type": "text",
"text": "UptimeKuma Alert: [✅ Up]\n" +
"Name: " + monitorJSON["name"] + " \n" +
heartbeatJSON["msg"] +
`\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
2021-09-07 07:42:46 -07:00
}
]
2022-04-13 09:30:32 -07:00
};
await axios.post(lineAPIUrl, upMessage, config);
2021-09-07 07:42:46 -07:00
}
return okMsg;
} catch (error) {
2022-04-13 09:30:32 -07:00
this.throwGeneralAxiosError(error);
2021-09-07 07:42:46 -07:00
}
}
}
module.exports = Line;