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"} 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}
def post(self,game_id=None): user = users.get_current_user() game = Game.get_by_id(int(game_id)) ## need to make a check to see if game exceeds max players game.players_current = game.players_current + 1 player = Player( game_id = int(game_id), player_id = user.user_id(), name = self.request.get('player_name'), tokens = 1000, cards_not_visible = game.deck, ) if not game.current_turn: game.current_turn = user.user_id() player.cards_visible = GameUpdater(game).deal_cards() player.put() game.players.append(player) game.put() self.redirect_to('table',game_id=game_id)