1import { postJson } from "../util/http.js";
2import { replaceVariables } from "../util/helpers.js";
3
4const URL = "https://api.pushover.net/1/messages.json";
5
6const defaults = {
7 finished: "A speedtest is finished:\nPing: %ping% ms (±%jitter% ms)\nUpload: %upload% Mbps\nDownload: %download% Mbps",
8 failed: "A speedtest has failed. Reason: %error%"
9};
10
11const send = ({token, user_key}, message, activity) =>
12 postJson(URL, {token, user: user_key, message}, {activity});
13
14export default (registerEvent) => {
15 registerEvent('testFinished', async ({data: c}, data, activity) => {
16 if (c.send_finished) await send(c,
17 replaceVariables(c.finished_message || defaults.finished, data), activity);
18 });
19
20 registerEvent('testFailed', async ({data: c}, error, activity) => {
21 if (c.send_failed) await send(c,
22 replaceVariables(c.error_message || defaults.failed, {error}), activity);
23 });
24
25 return {
26 icon: "fa-solid fa-pushover",
27 fields: [
28 {name: "token", type: "text", required: true, regex: /^[a-z0-9]{30}$/},
29 {name: "user_key", type: "text", required: true, regex: /^[a-z0-9]{30}$/},
30 {name: "send_finished", type: "boolean", required: false},
31 {name: "finished_message", type: "textarea", required: false},
32 {name: "send_failed", type: "boolean", required: false},
33 {name: "error_message", type: "textarea", required: false}
34 ]
35 };
36};
37