game.py 1.09 KiB
from parameter_util import JSON_BODY, JSON_CONTAINS
from http_util import FAIL, CODE_JSON, CODE_MISSING, CODE_SEMANTIC, CODE_GONE, CODE_CONFLICT, GET_HOST
from room_util import ROOM_GET
from gluon.contrib.websocket_messaging import websocket_send
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))
roles = json.dumps(roles)
db(db.Room.id == room_record.id).update(started=True, roles=roles)
websocket_send('http://' + GET_HOST() + ':8888', roles, 'mykey', room_record.code)
json_response = {"status": "success"}
return(response.json(json_response))