const NotificationProvider = require("./notification-provider"); const axios = require("axios"); const Crypto = require('crypto') class Matrix extends NotificationProvider { name = "matrix"; async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { let okMsg = "Sent Successfully."; const size = 20; const randomString = Crypto .randomBytes(size) .toString('base64') .slice(0, size); const roomId = notification .internalRoomId .replaceAll(":", "%3A") .replaceAll("!", "%21"); 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) return okMsg; } catch (error) { this.throwGeneralAxiosError(error); } } } module.exports = Matrix;