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
725 views
1
import logging
2
from typing import Union
3
4
from pushsafer import Client
5
6
from tgtg_scanner.errors import PushSaferConfigurationError
7
from tgtg_scanner.models import Config, Favorites, Item, Reservations
8
from tgtg_scanner.models.reservations import Reservation
9
from tgtg_scanner.notifiers.base import Notifier
10
11
log = logging.getLogger("tgtg")
12
13
14
class PushSafer(Notifier):
15
"""
16
Notifier for PushSafer\n
17
For more information visit:\n
18
https://www.pushsafer.com/
19
"""
20
21
def __init__(self, config: Config, reservations: Reservations, favorites: Favorites):
22
super().__init__(config, reservations, favorites)
23
self.enabled = config.pushsafer.enabled
24
self.key = config.pushsafer.key
25
self.device_ids = config.pushsafer.device_ids
26
self.cron = config.pushsafer.cron
27
if self.enabled:
28
if self.key is None or len(self.device_ids) == 0:
29
raise PushSaferConfigurationError()
30
self.client = Client(self.key)
31
32
def _send(self, item: Union[Item, Reservation]) -> None:
33
"""Sends item information to the Pushsafer endpoint"""
34
if isinstance(item, Item):
35
message = f"New Amount: {item.items_available}"
36
for device_id in self.device_ids:
37
self.client.send_message(message, item.display_name, device_id)
38
39
def __repr__(self) -> str:
40
return f"PushSafer: {self.key}"
41
42