From 6af73ccace93e55107deddf74605c4d936524863 Mon Sep 17 00:00:00 2001 From: Nils G <nils.gondermann@ruhr-uni-bochum.de> Date: Thu, 16 Apr 2020 12:46:36 +0200 Subject: [PATCH] Initial creation of API /game/start --- controllers/game.py | 34 ++++++++++++++++++++++++++++++++++ controllers/room.py | 10 ++++------ models/f_room.py | 2 ++ 3 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 controllers/game.py diff --git a/controllers/game.py b/controllers/game.py new file mode 100644 index 0000000..3ca1e33 --- /dev/null +++ b/controllers/game.py @@ -0,0 +1,34 @@ +from parameter_util import JSON_BODY, JSON_CONTAINS +from http_util import FAIL, CODE_JSON, CODE_MISSING, CODE_SEMANTIC, CODE_GONE, CODE_CONFLICT +from room_util import ROOM_GET + +import json + +def start(): + parameters = JSON_BODY(request) + + if parameters == None: + return(FAIL(CODE_JSON)) + + if not JSON_CONTAINS(parameters, [('room_id', int), ('room_pw', str), ('roles', dict)]): + return(FAIL(CODE_MISSING)) + + room_id = parameters['room_id'] + room_pw = parameters['room_pw'] + roles = parameters['roles'] + + room_record = ROOM_GET(room_id, room_pw) + + if not room_record: + return(FAIL(CODE_SEMANTIC)) + + if room_record.started: + return(FAIL(CODE_CONFLICT)) + + if room_record.closed: + return(FAIL(CODE_GONE)) + + db(db.Room.id == room_record.id).update(started=True, roles=json.dumps(roles)) + + json_response = {"status": "success"} + return(response.json(json_response)) diff --git a/controllers/room.py b/controllers/room.py index 5747644..6a9c9aa 100644 --- a/controllers/room.py +++ b/controllers/room.py @@ -21,9 +21,8 @@ def create(): room_id = db.Room.insert(player_max=player_max) room_record = db(db.Room.id == room_id).select().first() - json = {"room_id": room_id, "room_code": room_record.code, "room_pw": room_record.hashcode} - - return(response.json(json)) + json_response = {"room_id": room_id, "room_code": room_record.code, "room_pw": room_record.hashcode} + return(response.json(json_response)) def status(): @@ -48,6 +47,5 @@ def status(): players = PLAYERS_GET(room_record) - json = {"players": players} - - return(response.json(json)) + json_response = {"players": players} + return(response.json(json_response)) diff --git a/models/f_room.py b/models/f_room.py index 6ac77f6..fb6f7d3 100644 --- a/models/f_room.py +++ b/models/f_room.py @@ -8,6 +8,8 @@ db.define_table( Field('player_max', 'integer', notnull=True), Field('creation', 'datetime', default=request.now, notnull=True), Field('heartbeat', 'datetime', default=request.now, notnull=True), + Field('started', 'boolean', default=False), + Field('roles', 'string', default="", notnull=True), Field('closed', 'boolean', default=False) ) -- GitLab