mirror of
https://github.com/bluewave-labs/Checkmate.git
synced 2026-01-30 05:39:23 -06:00
69 lines
2.3 KiB
JavaScript
69 lines
2.3 KiB
JavaScript
import logger from '../utils/logger.js';
|
|
|
|
class NotificationController {
|
|
constructor(notificationService) {
|
|
this.notificationService = notificationService;
|
|
}
|
|
|
|
async triggerNotification(req, res) {
|
|
const { monitorId, type, config } = req.body;
|
|
|
|
if (!monitorId || !type) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
msg: "monitorId and type are required"
|
|
});
|
|
}
|
|
|
|
try {
|
|
const networkResponse = {
|
|
monitor: { _id: monitorId, name: "Test Monitor", url: "http://www.google.com" },
|
|
status: false,
|
|
statusChanged: true,
|
|
prevStatus: true,
|
|
};
|
|
|
|
if (type === "webhook") {
|
|
if (!config?.type) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
msg: "webhook type is required in config"
|
|
});
|
|
}
|
|
|
|
if (config.type === "telegram") {
|
|
if (!config.botToken || !config.chatId) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
msg: "botToken and chatId are required for Telegram notifications"
|
|
});
|
|
}
|
|
} else if (["discord", "slack"].includes(config.type)) {
|
|
if (!config.webhookUrl) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
msg: `webhookUrl is required for ${config.type} notifications`
|
|
});
|
|
}
|
|
}
|
|
|
|
await this.notificationService.sendWebhookNotification(
|
|
networkResponse,
|
|
config
|
|
);
|
|
}
|
|
|
|
res.json({ success: true, msg: "Notification sent successfully" });
|
|
} catch (error) {
|
|
logger.error({
|
|
message: error.message,
|
|
service: "NotificationController",
|
|
method: "triggerNotification",
|
|
stack: error.stack,
|
|
});
|
|
res.status(500).json({ success: false, msg: "Failed to send notification" });
|
|
}
|
|
}
|
|
}
|
|
|
|
export default NotificationController; |