erster docker release
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
"""NTFY push notification plugin."""
|
||||
|
||||
import subprocess
|
||||
import threading
|
||||
|
||||
EVENT_TAGS = {
|
||||
"start": "red_circle",
|
||||
"stop": "white_check_mark",
|
||||
"error": "rotating_light",
|
||||
"upload": "outbox_tray",
|
||||
}
|
||||
|
||||
|
||||
def send_notification(
|
||||
url: str,
|
||||
title: str,
|
||||
message: str,
|
||||
token: str = "",
|
||||
priority: str = "default",
|
||||
tags: str = "",
|
||||
):
|
||||
if not url:
|
||||
return
|
||||
|
||||
cmd = [
|
||||
"curl", "-s", "-o", "/dev/null", "--max-time", "10",
|
||||
"-H", f"Title: {title}",
|
||||
"-H", f"Priority: {priority}",
|
||||
]
|
||||
if tags:
|
||||
cmd += ["-H", f"Tags: {tags}"]
|
||||
cmd += ["-d", message]
|
||||
if token:
|
||||
cmd += ["-H", f"Authorization: Bearer {token}"]
|
||||
cmd.append(url)
|
||||
|
||||
def _send():
|
||||
try:
|
||||
subprocess.run(cmd, capture_output=True, timeout=15, stdin=subprocess.DEVNULL)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
threading.Thread(target=_send, daemon=True).start()
|
||||
|
||||
|
||||
class NtfyNotifier:
|
||||
def __init__(self, config):
|
||||
self.config = config
|
||||
|
||||
def _should_notify(self, event: str, job_ntfy_enabled: bool) -> bool:
|
||||
if not job_ntfy_enabled:
|
||||
return False
|
||||
url = self.config.get("ntfy", "url", default="")
|
||||
if not url:
|
||||
return False
|
||||
events = self.config.get("ntfy", "events", default="error")
|
||||
return event in [e.strip() for e in events.split(",")]
|
||||
|
||||
def notify(self, event: str, title: str, message: str, job_ntfy_enabled: bool = False, priority: str = "default"):
|
||||
if not self._should_notify(event, job_ntfy_enabled):
|
||||
return
|
||||
url = self.config.get("ntfy", "url", default="")
|
||||
token = self.config.get("ntfy", "token", default="")
|
||||
tag = EVENT_TAGS.get(event, "")
|
||||
send_notification(url, title, message, token=token, priority=priority, tags=tag)
|
||||
Reference in New Issue
Block a user