diff --git a/model.py b/model.py index 698c5b9..afc1282 100644 --- a/model.py +++ b/model.py @@ -7,33 +7,34 @@ import datetime class Model: def __init__(self, filename = "tehmodel.json"): - self.sockets = {} + self.sockets = {} # mapping: client -> socket self.filename = filename - self.sessions = None + self.model = None if os.path.isfile(filename): with open(filename) as f: try: - self.sessions = json.load(f) + self.model = json.load(f) except: - self.sessions = {} + self.model = {} else: - self.sessions = {} + self.model = {} + self.assert_model() + def assert_model(self): + if not "clients" in self.model: + self.model["clients"] = [] + if not "sessions" in self.model: + self.model["sessions"] = [] + def handle_post(self, data): print("I have received P O S T data: " + str(data)) print("let me tell everyone") for k, v in self.sockets.items(): v.send_json({"message": "nudes"}) - # handle post request data - - def __enter__(self): - return self - - def __exit__(self, exception_type, exception_value, traceback): - if not (exception_type or exception_value or traceback): - with open(self.filename, "w") as f: - json.dump(self.sessions, f) + def save(self): + with open(self.filename, "w") as f: + json.dump(self.model, f) if not os.path.isdir("backups"): try: os.mkdir("backups") @@ -41,25 +42,25 @@ class Model: print("backups is a file, no directory. Please delete yourself") datestring = datetime.datetime.strftime(datetime.datetime.now(), "%Y-%m-%d-%H%M%S") with open(f"backups/{datestring}_{self.filename}", "w") as f: - json.dump(self.sessions, f) + json.dump(self.model, f) def exists_client(self, clientid: str) -> bool: - return clientid in self.sockets + return clientid in self.model["clients"] - def create_client(self, sessionid: str) -> str: + def create_client(self) -> str: clientname = base64.b32encode(bytearray(random.randint(0, 0xFF) for _ in range(10)))[:16].decode().lower() - self.sessions[sessionid]["players"].append(clientname) + newclient = {"id": clientname} + self.model["clients"].append(newclient) return sessionname def create_session(self) -> str: sessionname = base64.b32encode(bytearray(random.randint(0, 0xFF) for _ in range(10)))[:16].decode().lower() - self.sessions[sessionname] = {"players": []} + newsession = {"id": sessionname, "clients": []} + self.model["sessions"].append(newsession) return sessionname def subscribe(self, clientid, socket): self.sockets[clientid] = socket - # todo subscribe socket, match with id - def unsubscribe(self, socket): for k,v in self.sockets.items(): diff --git a/tehmodel.json b/tehmodel.json deleted file mode 100644 index 463af97..0000000 --- a/tehmodel.json +++ /dev/null @@ -1 +0,0 @@ -{"bar": "foo", "foo": 3, "test": 4, "kso72uuzubg22om7": {}} \ No newline at end of file