hacktoberfestdockerselfhostedself-hostedresponsivemonitoringwebsocketwebappuptime-monitoringuptimesocket-iosingle-page-app
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							66 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							66 lines
						
					
					
						
							2.1 KiB
						
					
					
				| const NotificationProvider = require("./notification-provider"); | |
| const axios = require("axios"); | |
| const Slack = require("./slack"); | |
| const { setting } = require("../util-server"); | |
| const { getMonitorRelativeURL, UP, DOWN } = require("../../src/util"); | |
| 
 | |
| class RocketChat extends NotificationProvider { | |
| 
 | |
|     name = "rocket.chat"; | |
| 
 | |
|     async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { | |
|         let okMsg = "Sent Successfully."; | |
|         try { | |
|             if (heartbeatJSON == null) { | |
|                 let data = { | |
|                     "text": msg, | |
|                     "channel": notification.rocketchannel, | |
|                     "username": notification.rocketusername, | |
|                     "icon_emoji": notification.rocketiconemo, | |
|                 }; | |
|                 await axios.post(notification.rocketwebhookURL, data); | |
|                 return okMsg; | |
|             } | |
| 
 | |
|             const time = heartbeatJSON["time"]; | |
| 
 | |
|             let data = { | |
|                 "text": "Uptime Kuma Alert", | |
|                 "channel": notification.rocketchannel, | |
|                 "username": notification.rocketusername, | |
|                 "icon_emoji": notification.rocketiconemo, | |
|                 "attachments": [ | |
|                     { | |
|                         "title": "Uptime Kuma Alert *Time (UTC)*\n" + time, | |
|                         "text": "*Message*\n" + msg, | |
|                     } | |
|                 ] | |
|             }; | |
| 
 | |
|             // Color | |
|             if (heartbeatJSON.status === DOWN) { | |
|                 data.attachments[0].color = "#ff0000"; | |
|             } else { | |
|                 data.attachments[0].color = "#32cd32"; | |
|             } | |
| 
 | |
|             if (notification.rocketbutton) { | |
|                 await Slack.deprecateURL(notification.rocketbutton); | |
|             } | |
| 
 | |
|             const baseURL = await setting("primaryBaseURL"); | |
| 
 | |
|             if (baseURL) { | |
|                 data.attachments[0].title_link = baseURL + getMonitorRelativeURL(monitorJSON.id); | |
|             } | |
| 
 | |
|             await axios.post(notification.rocketwebhookURL, data); | |
|             return okMsg; | |
|         } catch (error) { | |
|             this.throwGeneralAxiosError(error); | |
|         } | |
| 
 | |
|     } | |
| } | |
| 
 | |
| module.exports = RocketChat;
 | |
| 
 |