1
0
mirror of https://github.com/louislam/uptime-kuma.git synced 2024-12-12 10:13:46 +02:00
uptime-kuma/server/notification-providers/matrix.js

46 lines
1.3 KiB
JavaScript
Raw Normal View History

2021-10-05 20:03:56 +02:00
const NotificationProvider = require("./notification-provider");
const axios = require("axios");
const Crypto = require("crypto");
2021-11-11 13:31:28 +02:00
const { log } = require("../../src/util");
2021-10-05 20:03:56 +02:00
class Matrix extends NotificationProvider {
name = "matrix";
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
2021-10-05 21:40:59 +02:00
let okMsg = "Sent Successfully.";
2021-10-05 20:03:56 +02:00
const size = 20;
const randomString = encodeURIComponent(
Crypto
.randomBytes(size)
.toString("base64")
.slice(0, size)
);
2021-11-11 13:31:28 +02:00
log("notification", "Random String: " + randomString, "debug");
const roomId = encodeURIComponent(notification.internalRoomId);
2021-11-11 13:31:28 +02:00
log("notification", "Matrix Room ID: " + roomId, "debug");
2021-10-05 20:03:56 +02:00
try {
let config = {
headers: {
"Authorization": `Bearer ${notification.accessToken}`,
}
};
let data = {
"msgtype": "m.text",
"body": msg
};
await axios.put(`${notification.homeserverUrl}/_matrix/client/r0/rooms/${roomId}/send/m.room.message/${randomString}`, data, config);
2021-10-05 20:03:56 +02:00
return okMsg;
} catch (error) {
this.throwGeneralAxiosError(error);
}
}
}
module.exports = Matrix;