This commit is contained in:
Jan K. 2024-11-13 18:38:54 +01:00 committed by GitHub
commit dd02c9c830
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 67 additions and 2 deletions

View file

@ -0,0 +1,52 @@
const NotificationProvider = require("./notification-provider");
const axios = require("axios");
const { UP } = require("../../src/util");
class Pumble extends NotificationProvider {
name = "pumble";
/**
* @inheritDoc
*/
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
const okMsg = "Sent Successfully.";
let webhookUrl = notification.pumblewebhookURL;
try {
if (heartbeatJSON === null && monitorJSON === null) {
// Test message
let data = {
"text": "Uptime Kuma Alert",
"attachments": [
{
"title": "Test Alert",
"text": msg,
"color": "#5BDD8B"
}
]
};
await axios.post(webhookUrl, data);
return okMsg;
}
let data = {
"text": "Uptime Kuma Alert",
"attachments": [
{
"title": `${monitorJSON["name"]} is ${heartbeatJSON["status"] === UP ? "up" : "down"}`,
"text": heartbeatJSON["msg"],
"color": (heartbeatJSON["status"] === UP ? "#5BDD8B" : "#DC3645"),
}
]
};
await axios.post(webhookUrl, data);
return okMsg;
} catch (error) {
this.throwGeneralAxiosError(error);
}
}
}
module.exports = Pumble;

View file

@ -69,6 +69,7 @@ const Cellsynt = require("./notification-providers/cellsynt");
const Onesender = require("./notification-providers/onesender");
const Wpush = require("./notification-providers/wpush");
const SendGrid = require("./notification-providers/send-grid");
const Pumble = require("./notification-providers/pumble");
class Notification {
@ -154,7 +155,8 @@ class Notification {
new GtxMessaging(),
new Cellsynt(),
new Wpush(),
new SendGrid()
new SendGrid(),
new Pumble()
];
for (let item of list) {
if (! item.name) {

View file

@ -165,7 +165,8 @@ export default {
"whapi": "WhatsApp (Whapi)",
"gtxmessaging": "GtxMessaging",
"Cellsynt": "Cellsynt",
"SendGrid": "SendGrid"
"SendGrid": "SendGrid",
"pumble": "Pumble",
};
// Put notifications here if it's not supported in most regions or its documentation is not in English

View file

@ -0,0 +1,8 @@
<template>
<div class="mb-3">
<label for="pumble-webhook-url" class="form-label mb-2">{{ $t("Webhook URL") }}</label><span style="color: red;"><sup>*</sup></span>
<input id="pumble-webhook-url" v-model="$parent.notification.pumblewebhookURL" type="text" class="form-control" required>
</div>
</template>
<script setup lang="ts">
</script>

View file

@ -67,6 +67,7 @@ import Cellsynt from "./Cellsynt.vue";
import WPush from "./WPush.vue";
import SIGNL4 from "./SIGNL4.vue";
import SendGrid from "./SendGrid.vue";
import Pumble from "./Pumble.vue";
/**
* Manage all notification form.
@ -142,6 +143,7 @@ const NotificationFormList = {
"Cellsynt": Cellsynt,
"WPush": WPush,
"SendGrid": SendGrid,
"pumble": Pumble
};
export default NotificationFormList;