hacktoberfestdockersocket-iosingle-page-appselfhostedself-hostedresponsivemonitoringwebsocketwebappuptime-monitoringuptime
		
		
		
		
			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.
		
		
		
		
		
			
		
			
				
					
					
						
							44 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							44 lines
						
					
					
						
							1.1 KiB
						
					
					
				| const NotificationProvider = require("./notification-provider"); | |
| const axios = require("axios"); | |
| const FormData = require("form-data"); | |
| 
 | |
| class Webhook extends NotificationProvider { | |
| 
 | |
|     name = "webhook"; | |
| 
 | |
|     async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { | |
|         let okMsg = "Sent Successfully."; | |
| 
 | |
|         try { | |
|             let data = { | |
|                 heartbeat: heartbeatJSON, | |
|                 monitor: monitorJSON, | |
|                 msg, | |
|             }; | |
|             let finalData; | |
|             let config = {}; | |
| 
 | |
|             if (notification.webhookContentType === "form-data") { | |
|                 finalData = new FormData(); | |
|                 finalData.append("data", JSON.stringify(data)); | |
| 
 | |
|                 config = { | |
|                     headers: finalData.getHeaders(), | |
|                 } | |
| 
 | |
|             } else { | |
|                 finalData = data; | |
|             } | |
| 
 | |
|             await axios.post(notification.webhookURL, finalData, config) | |
|             return okMsg; | |
| 
 | |
|         } catch (error) { | |
|             this.throwGeneralAxiosError(error) | |
|         } | |
| 
 | |
|     } | |
| 
 | |
| } | |
| 
 | |
| module.exports = Webhook;
 | |
| 
 |