Update model

This commit is contained in:
Dominic Zimmer 2020-04-17 00:29:22 +02:00
parent 34e8a46888
commit edb8d352d4
2 changed files with 22 additions and 22 deletions

View File

@ -7,33 +7,34 @@ import datetime
class Model: class Model:
def __init__(self, filename = "tehmodel.json"): def __init__(self, filename = "tehmodel.json"):
self.sockets = {} self.sockets = {} # mapping: client -> socket
self.filename = filename self.filename = filename
self.sessions = None self.model = None
if os.path.isfile(filename): if os.path.isfile(filename):
with open(filename) as f: with open(filename) as f:
try: try:
self.sessions = json.load(f) self.model = json.load(f)
except: except:
self.sessions = {} self.model = {}
else: 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): def handle_post(self, data):
print("I have received P O S T data: " + str(data)) print("I have received P O S T data: " + str(data))
print("let me tell everyone") print("let me tell everyone")
for k, v in self.sockets.items(): for k, v in self.sockets.items():
v.send_json({"message": "nudes"}) v.send_json({"message": "nudes"})
# handle post request data def save(self):
with open(self.filename, "w") as f:
def __enter__(self): json.dump(self.model, f)
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)
if not os.path.isdir("backups"): if not os.path.isdir("backups"):
try: try:
os.mkdir("backups") os.mkdir("backups")
@ -41,25 +42,25 @@ class Model:
print("backups is a file, no directory. Please delete yourself") print("backups is a file, no directory. Please delete yourself")
datestring = datetime.datetime.strftime(datetime.datetime.now(), "%Y-%m-%d-%H%M%S") datestring = datetime.datetime.strftime(datetime.datetime.now(), "%Y-%m-%d-%H%M%S")
with open(f"backups/{datestring}_{self.filename}", "w") as f: 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: 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() 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 return sessionname
def create_session(self) -> str: def create_session(self) -> str:
sessionname = base64.b32encode(bytearray(random.randint(0, 0xFF) for _ in range(10)))[:16].decode().lower() 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 return sessionname
def subscribe(self, clientid, socket): def subscribe(self, clientid, socket):
self.sockets[clientid] = socket self.sockets[clientid] = socket
# todo subscribe socket, match with id
def unsubscribe(self, socket): def unsubscribe(self, socket):
for k,v in self.sockets.items(): for k,v in self.sockets.items():

View File

@ -1 +0,0 @@
{"bar": "foo", "foo": 3, "test": 4, "kso72uuzubg22om7": {}}