def check_answer(androidId, huntID, step_num): data = request.get_json() response = database.get_hunt(huntID) if not response: return bad_request_response(message="Failed! Hunt not found") right_answer = (response["Item"].get("tasks", None))[step_num].get("answer") numClue = len(response["Item"]["clues"]) playerData = database.get_player(androidId)["Item"] user_answer = data["answer"] for letter in WORDS_REMOVED: right_answer = (right_answer.lower()).replace(letter, "") user_answer = (user_answer.lower()).replace(letter, "") right_answer = right_answer.replace(" ", "") user_answer = user_answer.replace(" ", "") if user_answer == right_answer: for hunt in playerData["started_hunts"]: if hunt["huntID"] == huntID and step_num == (numClue - 1): database.moveHunt(androidId, huntID) response = database.updateReward(androidId, huntID) return jsonify({ "code": 200, "message": "Success", "data": response }) response = database.update_playerHunt(androidId, huntID, (step_num + 1)) return jsonify({"code": 200, "message": "Success", "data": response}) return bad_request_response(message="Incorrect answer")
def use_offer(androidId, offerId): # data = request.get_json() playerData = (database.get_player(androidId))["Item"] offerData = (database.get_offer(offerId))["Item"] if playerData["coins"] >= offerData["coins"]: response = database.use_offer(androidId, offerId) if not response: return bad_request_response(message="Failed! Player not found") return jsonify({"code": 200, "message": "Success", "data": response}) return bad_request_response(message="Not Enough Coins to Buy")
def get_task(huntID, step_num): hexID = request.args.get("instanceID") instanceID = int(hexID, 16) response = database.get_hunt(huntID) if not response: return bad_request_response(message="Failed! Hunt not found") tasks = response["Item"].get("tasks", None) task = tasks[step_num] if task.get("instanceID", None) == instanceID: return jsonify({ "code": 200, "message": "Success", "data": task.get("question", None) }) return bad_request_response(message="Wrong Location")
def get_assets(androidId): # data = request.get_json() playerData = (database.get_player(androidId))["Item"] response = playerData["assets"] if response is None: return bad_request_response(message="Failed! Hunt not found") return jsonify({"code": 200, "message": "Success", "data": response})
def create_offer(): data = request.get_json() if data.get("coins", None) is not None: response = database.create_offer(data) if not response: return bad_request_response(message="Failed! Offer was not created") return jsonify({"code": 200, "message": "Success", "data": response})
def add_beacon(): data = request.get_json() if data.get("beacon_uuid", None) is not None: response = database.new_beacon(data) if not response: return bad_request_response(message="Failed! Beacon was not added") return jsonify({"code": 200, "message": "Success", "data": response})
def add_hunt(): data = request.get_json() if data.get("name", None) is not None: response = database.create_hunt(data) if not response: return bad_request_response(message="Failed! Hunt was not created") return jsonify({"code": 200, "message": "Success", "data": response})
def nearby_hunt(androidID): latitude = str(request.args.get("latitude")) longitude = str(request.args.get("longitude")) radius = float(request.args.get("radius")) response = database.get_allHunt() print(response) player = (database.get_player(androidID)).get("Item", None) data = [] if not response: return bad_request_response(message="Failed! Hunt not found") for item in response: distance = find_distance( latitude, longitude, str(item.get("start_lati", None)), str(item.get("start_long", None)), ) if radius >= distance: have_started = False if (player.get("started_hunts")) is not None: for hunt in player.get("started_hunts"): if hunt["huntID"] == item["huntID"]: have_started = True break if (player.get("completed_hunts")) is not None: for hunt in player.get("completed_hunts"): if hunt["huntID"] == item["huntID"]: have_started = True break if not have_started: data.append(item) return jsonify({"code": 200, "message": "Success", "data": data})
def get_hint(huntID, step_num): response = database.get_hunt(huntID) if not response: return bad_request_response(message="Failed! Hunt not found") hints = response["Item"].get("hints", None) hint = hints[step_num] return jsonify({"code": 200, "message": "Success", "data": hint})
def register_user(): data = request.get_json() database = DB() if data.get("name", None) is not None and data.get("email", None) is not None: response = database.create_users(data) if not response: return bad_request_response(message="Failed! User was not created") return jsonify({"code": 200, "message": "Success", "data": response})
def start_hunt(androidID, huntID): # data = request.get_json() response = database.get_hunt(huntID) if not response: return bad_request_response(message="Failed! Hunt not found") player = (database.get_player(androidID)).get("Item", None) have_started = False if (player.get("started_hunts")) is not None: for hunt in player["started_hunts"]: if hunt["huntID"] == huntID: have_started = True break if not have_started: return_data = database.startHunt(androidID, huntID) if not return_data: return bad_request_response(message="Failed! Hunt not updated") return jsonify({"code": 200, "message": "Success", "data": return_data})
def get_hunt(huntID): response = database.get_hunt(huntID) if not response: return bad_request_response(message="Failed! Hunt not found") return jsonify({ "code": 200, "message": "Success", "data": response["Item"] })
def check_star(androidId, huntID): # data = request.get_json() playerData = (database.get_player(androidId))["Item"] for hunt in playerData["started_hunts"]: if huntID == hunt["huntID"]: response = hunt["hasUsedStar"] if response is None: return bad_request_response(message="Failed! Hunt not found") return jsonify({"code": 200, "message": "Success", "data": response})
def get_allassets(): response = database.get_assets() if not response: return bad_request_response(message="Failed! Assets not found") return jsonify({ "code": 200, "message": "Success", "data": response["Items"] })
def use_star(androidId, huntID): # data = request.get_json() playerData = (database.get_player(androidId))["Item"] if playerData["stars"] > 0: for hunt in playerData["started_hunts"]: if huntID == hunt["huntID"] and hunt["hasUsedStar"]: stars = playerData["stars"] - 1 response = database.update_star(huntID, playerData, stars, (hunt["current_clue"] + 1)) if not response: return bad_request_response( message="Failed! Hunt not found") return jsonify({ "code": 200, "message": "Success", "data": response }) return bad_request_response(message="Has used star for this Hunt") return bad_request_response(message="Not Enough Stars")
def get_completed_hunt(androidId): response = database.get_player(androidId) if not response: return bad_request_response(message="Failed! Hunt not found") reply = [] for hunt in response["Item"].get("completed_hunts", None): hunt_info = database.get_hunt(hunt["huntID"]) reply_data = {"completed_hunt": hunt, "hunt_info": hunt_info["Item"]} reply.append(reply_data) return jsonify({"code": 200, "message": "Success", "data": reply})
def register_player(): data = request.get_json() if data.get("androidId", None) is not None: playerData = database.get_player(data.get("androidId", None)) if playerData.get("Item", None) is None: response = database.create_player(data) try: """Create HF account""" PARAMS = {"username": data.get("androidId", None)} r = requests.post(url=fabric_server + "/users", json=PARAMS, headers=HEADER) content = r.json() except socket.timeout: return bad_request_response( message="Failed! Problem in creating fabric account") if not response: return bad_request_response( message="Failed! User was not created") return jsonify({"code": 200, "message": "Success", "data": content})
def use_hint(androidId, huntID, step_num): # data = request.get_json() playerData = (database.get_player(androidId))["Item"] response = database.get_hunt(huntID) if not response: return bad_request_response(message="Failed! Hunt not found") hint = None if playerData["gems"] >= 10: hints = response["Item"].get("hints", None) hint = hints[step_num] response = database.update_gems(playerData) return jsonify({"code": 200, "message": "Success", "data": hint})
def update_rating(huntID): data = request.get_json() hunt_data = (database.get_hunt(huntID))["Item"] # Add the user rating to previous and divide with total users user_rating = data.get("user_rating", None) previous_user_rating = hunt_data.get("user_rating", None) * hunt_data.get( "num_raters", None) num_raters = hunt_data.get("num_raters", None) + 1 new_user_rating = (user_rating + previous_user_rating) / (num_raters) update_data = {"user_rating": new_user_rating, "num_raters": num_raters} return_data = database.update_huntRating(huntID, update_data) if not return_data: return bad_request_response(message="Failed! Hunt not updated") return jsonify({"code": 200, "message": "Success", "data": return_data})