summaryrefslogtreecommitdiff
path: root/fortniteStatusWrapper.py
diff options
context:
space:
mode:
authorDmitrii Morozov <snoopdesigns@gmail.com>2024-03-28 19:31:10 +0100
committerDmitrii Morozov <snoopdesigns@gmail.com>2024-03-28 19:31:10 +0100
commit9546faa2601c1b314bda0f6a0ee7bdd799a13061 (patch)
tree875ea567953fe4b5e94594d3bd4f59b5ff734f2d /fortniteStatusWrapper.py
parent27334b6e89cdec616ea6ac180ec1047a0bd4f54f (diff)
Async notification for changes in status
Diffstat (limited to 'fortniteStatusWrapper.py')
-rw-r--r--fortniteStatusWrapper.py48
1 files changed, 35 insertions, 13 deletions
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