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
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
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
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
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)
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
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
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
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
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
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
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
def listRooms(): room_list = db_container.get_database().list_rooms() resp = jsonify(room_list) resp.status_code = 200 return resp