Skip to content
Snippets Groups Projects
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))