Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Der-Henning
GitHub Repository: Der-Henning/tgtg
Path: blob/main/tgtg_scanner/notifiers/push_safer.py
1494 views
1
import logging
2
3
from pushsafer import Client
4
5
from tgtg_scanner.errors import PushSaferConfigurationError
6
from tgtg_scanner.models import Config, Favorites, Item, Reservations
7
from tgtg_scanner.models.reservations import Reservation
8
from tgtg_scanner.notifiers.base import Notifier
9
10
log = logging.getLogger("tgtg")
11
12
13
class PushSafer(Notifier):
14
"""Notifier for PushSafer
15
16
For more information visit https://www.pushsafer.com/.
17
"""
18
19
def __init__(self, config: Config, reservations: Reservations, favorites: Favorites):
20
super().__init__(config, reservations, favorites)
21
self.enabled = config.pushsafer.enabled
22
self.key = config.pushsafer.key
23
self.device_ids = config.pushsafer.device_ids
24
self.cron = config.pushsafer.cron
25
if self.enabled:
26
if self.key is None or len(self.device_ids) == 0:
27
raise PushSaferConfigurationError()
28
self.client = Client(self.key)
29
30
def _send(self, item: Item | Reservation) -> None:
31
"""Sends item information to the Pushsafer endpoint."""
32
if isinstance(item, Item):
33
message = f"New Amount: {item.items_available}"
34
for device_id in self.device_ids:
35
self.client.send_message(message, item.display_name, device_id)
36
37
def __repr__(self) -> str:
38
return f"PushSafer: {self.key}"
39
40