Files
myspeed/server/integrations/pushover.js
2024-05-19 21:33:26 +02:00

47 lines
1.8 KiB
JavaScript

const axios = require("axios");
const {replaceVariables} = require("../util/helpers");
const BASE_URL = "https://api.pushover.net/1";
const defaults = {
finished: "A speedtest is finished:\nPing: %ping% ms\nUpload: %upload% Mbps\nDownload: %download% Mbps",
failed: "A speedtest has failed. Reason: %error%"
}
module.exports = (registerEvent) => {
registerEvent('testFinished', async (integration, data, triggerActivity) => {
if (!integration.data.send_finished) return;
const message = replaceVariables(integration.data.finished_message || defaults.finished, data);
axios.post(`${BASE_URL}/messages.json`, {
token: integration.data.token,
user: integration.data.user_key, message
}).then(() => triggerActivity())
.catch(() => triggerActivity(true));
});
registerEvent('testFailed', async (integration, error, triggerActivity) => {
if (!integration.data.send_failed) return;
const message = replaceVariables(integration.data.error_message || defaults.failed, {error});
axios.post(`${BASE_URL}/messages.json`, {
token: integration.data.token,
user: integration.data.user_key, message
}).then(() => triggerActivity())
.catch(() => triggerActivity(true));
});
return {
icon: "fa-solid fa-pushover",
fields: [
{name: "token", type: "text", required: true, regex: /^[a-z0-9]{30}$/},
{name: "user_key", type: "text", required: true, regex: /^[a-z0-9]{30}$/},
{name: "send_finished", type: "boolean", required: false},
{name: "finished_message", type: "textarea", required: false},
{name: "send_failed", type: "boolean", required: false},
{name: "error_message", type: "textarea", required: false}
]
};
}