summaryrefslogtreecommitdiff
path: root/ATRI/service.py
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/service.py')
-rw-r--r--ATRI/service.py112
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