summaryrefslogtreecommitdiff
path: root/FortniteStatusNotifier.py
blob: 79323800cee66287b8e9e6ad9391e03b9318e114 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from telebot import formatting
import time
import asyncio
from pythonFortniteStatus.FortniteStatus import *

# Polling interval in seconds
__polling_interval__ = 5 * 60 # 5 minutes

class FortniteStatusObserver:
    async def update(self, fortnite_status) -> None:
        pass

class FortniteStatusNotifier:

    __fortniteStatusObserver: FortniteStatusObserver
    __fortniteStatus: FortniteStatus
    __lastFortniteStatus: any

    def __init__(self, fortniteStatusObserver: FortniteStatusObserver):
        self.__fortniteStatusObserver = fortniteStatusObserver
        self.__fortniteStatus = FortniteStatus()
    
    async def run(self):
        # Initialize status
        self.__lastFortniteStatus = self.__fortniteStatus.getStatus()
        while True:
            await self.__readStatus()
            await asyncio.sleep(__polling_interval__)
    
    async def __readStatus(self):
        serviceStatusTmp = self.__fortniteStatus.getStatus()
        if serviceStatusTmp != self.__lastFortniteStatus:
            await self.__notify(serviceStatusTmp)
        self.__lastFortniteStatus = serviceStatusTmp

    async def __notify(self, fortniteStatus):
        await self.__fortniteStatusObserver.update(fortniteStatus)