示例#1
0
def updateRoom(roomId):
    roomData = db_container.get_database().get_room(roomId)
    # Check to ensure room exists
    if roomData == None:
        response = jsonify("Room not found")
        response.status_code = 404
        return response

    if not request.headers['Content-Type'] == 'application/json':
        response = jsonify("Invalid update data, must be json")
        response.status_code = 415
        return response

    # Update room
    updated_room = db_container.get_database().update_room(
        roomId, request.json)

    if updated_room == None:
        response = jsonify("Server error updating room")
        response.status_code = 500
        return response

    resp = jsonify(updated_room)
    resp.status_code = 200
    return resp
示例#2
0
def getQuestionList(roomId):
    if not db_container.get_database().room_exists(roomId):
        response = jsonify("Room Id not found")
        response.status_code = 404
        return response
    question_list = jsonify(
        db_container.get_database().get_question_list(roomId))
    question_list.status_code = 200
    return question_list
示例#3
0
def getQuestionResponses(questionId):
    if not db_container.get_database().question_exists(questionId):
        response = jsonify("Question Id not found")
        response.status_code = 404
        return response
    responses = jsonify(
        db_container.get_database().get_question_responses(questionId))
    responses.status_code = 200
    return responses
示例#4
0
def clearActiveQuestion(roomId):
    if not db_container.get_database().room_exists(roomId):
        response = jsonify("Room Id not found")
        response.status_code = 404
        return response

    db_container.get_database().update_room(roomId, {ACTIVE_QUESTION_KEY: ""})
    response = jsonify("")
    response.status_code = 204
    return response
示例#5
0
    def setUp(self):
        # app.config['TESTING'] = True
        # app.config['WTF_CSRF_ENABLED'] = False
        # app.config['DEBUG'] = False
        # app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + \
        #     os.path.join(app.config['BASEDIR'], TEST_DB)
        self.app = app.test_client()
        db_container.set_test_mode()
        db_container.get_database()._reset()

        self.assertEqual(app.debug, False)
示例#6
0
def respondToQuestion(questionId):
    headers = request.headers
    userId = headers[USERNAME]
    answer_data = request.json
    if not db_container.get_database().question_exists(questionId):
        response = jsonify("Question Id not found")
        response.status_code = 404
        return response
    result = db_container.get_database().set_question_response(
        questionId, userId, answer_data)
    responses = jsonify(result)
    responses.status_code = 200
    return responses
示例#7
0
def getQuestionOptions(roomId, questionId):
    if not db_container.get_database().room_exists(roomId):
        response = jsonify("Room Id not found")
        response.status_code = 404
        return response
    if not db_container.get_database().question_exists(questionId):
        response = jsonify("Question Id not found")
        response.status_code = 404
        return response
    active_id = db_container.get_database().get_active_question(roomId)
    active_options = db_container.get_database().get_question_options(
        active_id)
    response = jsonify(active_options)
    response.status_code = 200
    return response
示例#8
0
def deleteRoom(roomId):
    # Check to ensure room exists
    if not db_container.get_database().room_exists(roomId):
        response = jsonify("Room Id not found")
        response.status_code = 404
        return response

    # Delete room
    response = db_container.get_database().delete_room(roomId)

    if response == True:
        response = jsonify("Deleted room with id %s successfully" % roomId)
        response.status_code = 204
        return response
    response = jsonify("Server error deleting room")
    response.status_code = 500
    return response
示例#9
0
def createRoom():
    room_id = db_container.get_database().create_room()
    if room_id == None:
        response = jsonify("Server error creating room")
        response.status_code = 500
        return response
    resp = jsonify(room_id)
    resp.status_code = 201
    return resp
示例#10
0
def getActiveQuestion(roomId):
    roomData = db_container.get_database().get_room(roomId)
    # Check to ensure room exists
    if roomData == None:
        response = jsonify("Room not found")
        response.status_code = 404
        return response

    response = jsonify(roomData[ACTIVE_QUESTION_KEY])
    response.status_code = 200
    return response
示例#11
0
def getRoomData(roomId):
    roomData = db_container.get_database().get_room(roomId)
    # Check to ensure room exists
    if roomData == None:
        response = jsonify("Room not found")
        response.status_code = 404
        return response

    resp = jsonify(roomData)
    resp.status_code = 200
    return resp
示例#12
0
def addNewQuestion(roomId):
    if not db_container.get_database().room_exists(roomId):
        response = jsonify("Room Id not found")
        response.status_code = 404
        return response
    json_obj = json.loads(urllib.parse.unquote_plus(request.data.decode()))
    options = json_obj["opt"]
    questionId = db_container.get_database().make_new_question(options)
    db_container.get_database().update_room(roomId,
                                            {ACTIVE_QUESTION_KEY: questionId})
    current_questions = db_container.get_database().get_question_list(roomId)
    db_container.get_database().update_room(
        roomId, {QUESTION_LIST_KEY: [questionId] + current_questions})

    response = jsonify(questionId)
    response.status_code = 200
    return response
def attempt_join(join_room, join_name):
    if not valid_room_id(join_room):
        response = jsonify("Room Id not valid")
        response.status_code = 400
        return response
    elif not db_container.get_database().room_exists(join_room):
        response = jsonify("Room Id not found")
        response.status_code = 404
        return response
    session_name = session[
        SESSION_USERNAME] if SESSION_USERNAME in session else None
    session_room = session[SESSION_ROOM] if SESSION_ROOM in session else None

    # Fix the user's name so they can't change names
    #  from the same browser. They just rejoined the room so we're good
    if session_room != None and session_room == join_room and session_name != None:
        session[SESSION_USERNAME] = session_name
        session[SESSION_ROOM] = session_room

        response = jsonify({
            "status": "rejoin",
            "username": session_name,
            "room": session_room
        })
        response.status_code = 200
        return response

    # Attempt to join the room
    # Filter out invalid characters in name
    join_name = get_filtered_username(join_name)
    # Check to ensure name is valid
    if not valid_username(join_name):
        response = jsonify("Invalid username")
        response.status_code = 400
        return response

    # Check to ensure the game is not full
    if db_container.get_database().is_room_full(join_room):
        response = jsonify("Room is full")
        response.status_code = 401
        return response

    # Check to ensure the game is not full
    if db_container.get_database().is_player_in_room(join_room, join_name):
        response = jsonify("Name is taken")
        response.status_code = 401
        return response

    # Make request to join game from database
    join_name = db_container.get_database().add_player(join_room, join_name)

    if join_name == None:
        response = jsonify("Error joining room")
        response.status_code = 500
        return response

    # Set session token
    session[SESSION_USERNAME] = join_name
    session[SESSION_ROOM] = join_room

    response = jsonify({
        "status": "join",
        "username": join_name,
        "room": join_room
    })
    response.status_code = 200
    return response
示例#14
0
def listRooms():
    room_list = db_container.get_database().list_rooms()
    resp = jsonify(room_list)
    resp.status_code = 200
    return resp