def handle(self): username = self.request.get("u") if not username: return {"success": False, "error": "format"} player = Player.all().filter('username = '******'searching = ', True).filter('username !=', username).get() if other: other.searching = False other.match_server = server player.match_server = server server.free = False other.put() player.put() server.put() return {"success": True} player.searching = True player.put() return {"success": True}
def handle(self): host = self.request.get("h") players = self.request.get("p") scores = self.request.get("s") duration = self.request.get("d") # preconditions try: players = players.split(",") playera, playerb = tuple(players) scorea, scoreb = tuple([int(x) for x in scores.split(",")]) scores = [scorea, scoreb] except Exception: players, scores = None, None try: duration = long(float(duration)) except ValueError: duration = None if not host or not players or not scores or not duration: return {"success": False, "error": "format"} server = Server.all().filter('host = ', host).get() if not server: return {"success": False, "error": "nonexisting"} # actual processing server.free = True playera = Player.all().filter('username = '******'username = ', playerb).get() (pa_new_elo, pb_new_elo) = calculate_elos(playera.elo, playerb.elo, PLAYER_A if scorea > scoreb else PLAYER_B) mh = MatchHistory( players = players, scores = scores, elo_delta = playera.elo - playerb.elo, duration = duration) playera.elo = int(pa_new_elo) playerb.elo = int(pb_new_elo) server.put() playera.put() playerb.put() mh.put() return {"success": True}
def dispatch(self, message): try: request = json.loads(message.body) assert isinstance(request, dict), 'Request should be a dict().' assert 'request' in request, 'Required argument is missing: "request".' method_name = str(request['request']) assert not method_name.startswith( '_'), 'You are not allowed to call private API.' f = getattr(controller, method_name, None) assert callable(f), 'You are requesting an unknown API.' # Get Player record from server. sender = db.IM('xmpp', message.sender.split('/')[0]) player = Player.all().filter('account =', sender).fetch(limit=1) if len(player) == 0: # Create a new record for new Player. player = Player(account=sender) player.put() else: player = player[0] assert player is not None, 'Failed to get player data.' # Take action arg = request['arg'] if 'arg' in request else {} assert isinstance(arg, dict), 'Arguments should be a dict()' arg['sender'] = player # append sender to arguments result = f(arg) except AssertionError, e: result = json.dumps({ 'response': method_name if 'method_name' in locals() else 'unknown', 'stat': 'fail', 'msg': str(e) })
def handle(self): username = self.request.get("u") password = self.request.get("p") if not username or not password: return {"success": False , "error": "format"} player = Player.all().filter('username ='******'password', hash_digest(password)).get() if not player: return {"success": False , "error": "failed"} if not player.counter: player.counter = 0 player.counter += 1 player.put() return {"success": True}
def handle(self): username = self.request.get("u") if not username: return {"success": False, "error": "format"} player = Player.all().filter('username = ', username).get() if not player: return {"success": False, "error": "nonexisting"} if not player.match_server: return {"success": True, "host": None} server_host = player.match_server.host player.match_server = None player.put() return {"success": True, "host": server_host}
def handle(self): username = self.request.get("u") password = self.request.get("p") if not username or not password: return {"success": False , "error": "format"} same_name = Player.all().filter('username =', username) if same_name.get(): return {"success": False , "error": "username"} player = Player( username=username, password=hash_digest(password), counter = 0, elo = DEFAULT_ELO, searching=False, match_server=None) player.put() return {"success": True}