Ejemplo n.º 1
0
    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)
            })
Ejemplo n.º 2
0
 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}
Ejemplo n.º 3
0
  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)