diff options
Diffstat (limited to 'ATRI/service.py')
-rw-r--r-- | ATRI/service.py | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/ATRI/service.py b/ATRI/service.py new file mode 100644 index 0000000..79ed7ad --- /dev/null +++ b/ATRI/service.py @@ -0,0 +1,112 @@ +import json +from pathlib import Path +from typing import Optional + +SERVICE_SWITCH_PATH = Path('.') / 'ATRI' / 'data' / 'service' / 'switch.service.json' +SERVICE_BANLIST_PATH = Path('.') / 'ATRI' / 'data' / 'service' / 'banlist.service.json' + +state = 0 + + +class Service(): + class Switch(): + if not SERVICE_SWITCH_PATH.is_file: + SERVICE_SWITCH_PATH.write_text(json.dumps({})) + data = {} + else: + data = json.loads(SERVICE_SWITCH_PATH.read_bytes()) + + def get_service(self) -> dict: + return self.data + + def auth_service(self, service: str, group: Optional[int]) -> bool: + try: + self.data['global'] + except: + self.data['global'] = {} + SERVICE_SWITCH_PATH.write_text(json.dumps(self.data)) + + try: + self.data[group] + except: + self.data[group] = {} + SERVICE_SWITCH_PATH.write_text(json.dumps(self.data)) + + if (not self.data['global'].get('service', None) + or not self.data[group][service].get('service', None)): + self.data['global'][service] = True + self.data[group][service] = True + SERVICE_SWITCH_PATH.write_text(json.dumps(self.data)) + else: + pass + + if self.data['global'][service]: + return True if self.data[group][service] else False + else: + return False + + def control_service(self, service: str, _type: bool, group: Optional[int]) -> bool: + if service not in self.data: + self.data['global'][service] = True + self.data[group][service] = True + SERVICE_SWITCH_PATH.write_text(json.dumps(self.data)) + + if group: + try: + self.data[group][service] = _type + SERVICE_SWITCH_PATH.write_text(json.dumps(self.data)) + return True + except: + return False + else: + try: + self.data['global'][service] = _type + SERVICE_SWITCH_PATH.write_text(json.dumps(self.data)) + return True + except: + return False + + class BanList(): + if not SERVICE_BANLIST_PATH.is_file(): + SERVICE_BANLIST_PATH.write_text(json.dumps({})) + data = {} + else: + data = json.loads(SERVICE_BANLIST_PATH.read_bytes()) + + def get_banlist(self) -> dict: + return self.data + + def is_in_list(self, user: Optional[int]) -> bool: + return False if user in self.data else True + + def add_list(self, user: Optional[int]) -> bool: + try: + self.data[user] = user + SERVICE_BANLIST_PATH.write_text(json.dumps(self.data)) + return True + except: + return False + + def del_list(self, user: Optional[int]) -> bool: + try: + del self.data[user] + SERVICE_BANLIST_PATH.write_text(json.dumps(self.data)) + return True + except: + return False + + class Dormant(): + + def is_sleep(self) -> bool: + return True if state != 1 else False + + def cont_wake(self, _type: bool) -> bool: + global state + try: + if _type: + state = 0 + else: + state = 1 + return True + except: + return False |