From 9546faa2601c1b314bda0f6a0ee7bdd799a13061 Mon Sep 17 00:00:00 2001 From: Dmitrii Morozov Date: Thu, 28 Mar 2024 19:31:10 +0100 Subject: Async notification for changes in status --- fortniteStatusWrapper.py | 48 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 13 deletions(-) (limited to 'fortniteStatusWrapper.py') diff --git a/fortniteStatusWrapper.py b/fortniteStatusWrapper.py index 1fd4ece..48618be 100644 --- a/fortniteStatusWrapper.py +++ b/fortniteStatusWrapper.py @@ -1,17 +1,39 @@ from telebot import formatting +import time, threading, schedule +from pythonFortniteStatus.FortniteStatus import * -def formatStatus(status): - if (status == True): - return u'\u2714' - else: - return u'\u274c' +__polling_interval__ = 5 -def formmatFortniteServiceStatus(fortniteServiceStatus): - return formatting.format_text( - formatting.mbold(fortniteServiceStatus.serviceName), - formatStatus(fortniteServiceStatus.status), - separator=': ') +fortniteStatus = FortniteStatus() -def formatFortniteStatus(fortniteStatus): - statuses = [formmatFortniteServiceStatus(serviceStatus) for serviceStatus in fortniteStatus.serviceStatuses] - return '\n'.join(statuses) \ No newline at end of file +class Observer: + def update(self, fortniteStatus) -> None: + pass + +class FortniteStatusWrapper: + + observers = [] + fortniteStatus = None + + def __init__(self): + schedule.every(__polling_interval__).seconds.do(self.__readStatus) + threading.Thread(target=self.__scheduleHandler, name='fortnite_status_scheduler', daemon=True).start() + + def __scheduleHandler(self): + while True: + schedule.run_pending() + time.sleep(1) + + def __readStatus(self): + serviceStatusTmp = fortniteStatus.getStatus() + if serviceStatusTmp != self.fortniteStatus: + self.notify(serviceStatusTmp) + self.fortniteStatus = serviceStatusTmp + + def notify(self, fortniteStatus): + print("Fortnite status changed, notifying observers") + for observer in self.observers: + observer.update(fortniteStatus) + + def attach(self, observer: Observer): + self.observers.append(observer) \ No newline at end of file -- cgit v1.2.3