2
2
from logging import getLogger
3
3
4
4
import paho .mqtt .client as mqtt
5
+ from flask import url_for
5
6
from requests import post
6
7
7
8
from conf import CONFIG
9
+ from util import cached_asset_name
8
10
9
11
LOG = getLogger ("Notifier" )
10
12
@@ -22,7 +24,7 @@ def __init__(self):
22
24
self .config ["MQTT_USERNAME" ], self .config ["MQTT_PASSWORD" ]
23
25
)
24
26
25
- def message (self , message , level = "INFO" , component = None ):
27
+ def message (self , message , level = "INFO" , component = None , asset = None ):
26
28
LOG .debug (f"{ message = } { level = } { component = } " )
27
29
if self .mqtt :
28
30
try :
@@ -32,7 +34,7 @@ def message(self, message, level="INFO", component=None):
32
34
33
35
for ntfy_url in self .config .get ("NTFY" , set ()):
34
36
try :
35
- self ._ntfy_message (ntfy_url , message )
37
+ self ._ntfy_message (ntfy_url , message , asset )
36
38
except Exception :
37
39
LOG .exception (f"ntfy url { ntfy_url } failed sending" )
38
40
@@ -59,12 +61,22 @@ def _mqtt_message(self, message, level, component_suffix):
59
61
60
62
LOG .info ("sent mqtt message" )
61
63
62
- def _ntfy_message (self , ntfy_url , message ):
64
+ def _ntfy_message (self , ntfy_url , message , asset ):
63
65
LOG .info (f"sending alert to { ntfy_url } with message { message !r} " )
64
66
67
+ headers = {}
68
+ if asset is not None :
69
+ headers ["Click" ] = url_for (
70
+ "content_moderate" , asset_id = asset .id , _external = True
71
+ )
72
+ headers ["Attach" ] = url_for (
73
+ "static" , filename = cached_asset_name (asset ), _external = True
74
+ )
75
+
65
76
r = post (
66
77
ntfy_url ,
67
78
data = str (message ).encode ("utf-8" ),
79
+ headers = headers ,
68
80
)
69
81
r .raise_for_status ()
70
82
0 commit comments