Update model
This commit is contained in:
parent
34e8a46888
commit
edb8d352d4
43
model.py
43
model.py
@ -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():
|
||||||
|
@ -1 +0,0 @@
|
|||||||
{"bar": "foo", "foo": 3, "test": 4, "kso72uuzubg22om7": {}}
|
|
Loading…
Reference in New Issue
Block a user