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

49 lines
1.4 KiB
JavaScript
Raw Normal View History

2021-10-05 19:03:56 +01:00
const NotificationProvider = require("./notification-provider");
const axios = require("axios");
const Crypto = require("crypto");
const { log } = require("../../src/util");
2021-10-05 19:03:56 +01:00
class Matrix extends NotificationProvider {
name = "matrix";
/**
* @inheritdoc
*/
2021-10-05 19:03:56 +01:00
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
2021-10-05 20:40:59 +01:00
let okMsg = "Sent Successfully.";
2021-10-05 19:03:56 +01:00
const size = 20;
const randomString = encodeURIComponent(
Crypto
.randomBytes(size)
.toString("base64")
.slice(0, size)
);
log.debug("notification", "Random String: " + randomString);
const roomId = encodeURIComponent(notification.internalRoomId);
log.debug("notification", "Matrix Room ID: " + roomId);
2021-10-05 19:03:56 +01: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 19:03:56 +01:00
return okMsg;
} catch (error) {
this.throwGeneralAxiosError(error);
}
}
}
module.exports = Matrix;