示例#1
0
    def render_GET(self, request):
        request.defaultContentType = "application/json"
        try:
            token = request.args["token"][0]
        except KeyError:
            return json.dumps({"error" : "no token given"})

        result = self.cp.runQuery(
            "update games set hasStarted = 1 where token = ?", (Utility.hashToken(token),)
        )
        result.addCallback(self.gameJoined, request, token)
        return NOT_DONE_YET 
示例#2
0
    def render_GET(self, request):
        request.defaultContentType = "application/json"
        try:
            token = request.args["token"][0]
        except KeyError:
            return json.dumps({"error" : "no token given"})

        try:
            identifier = request.args["id"][0]
            result = self.cp.runQuery(
                "delete from games where id = ? and token = ?", (identifier, Utility.hashToken(token))
            )
            result.addCallback(self.gameRemoved, request, token)
            return NOT_DONE_YET
        except KeyError:
            return json.dumps({"error" : "id or name required"})
示例#3
0
 def render_GET(self, request):
     request.defaultContentType = "application/json"
     try:
         # TODO: check if the game actually exists
         gameId = int(request.args["gameId"][0])
         playerId = int(request.args["id"][0])
         token = request.args["token"][0]
         result = self.cp.runQuery(
             """
             update or ignore accounts set currentGame = ?
             where id = ? and token = ?
             """,
             (gameId, playerId, Utility.hashToken(token))
         )
         result.addCallback(self.gameJoined, request)
         return NOT_DONE_YET 
     except:
         return json.dumps({"error" : "not all arguments set"})
示例#4
0
    def insertGame(self, interaction, name, owner, maxPlayers, token, playerToken,
        wallbreaker, timeLimit, maxDist):

        interaction.execute("select token from accounts where id = ?", (owner, ))
        realToken = interaction.fetchone()
        if realToken is None or not Utility.checkToken(playerToken, realToken[0]):
            return None

        interaction.execute(
            """
            insert or ignore into games (
                name, owner, maxPlayers, ping, token, wallbreaker, timeLimit, maxDist
            )
            values (?, ?, ?, 0, ?, ?, ?, ?)
            """,
            (name, owner, maxPlayers, Utility.hashToken(token), wallbreaker, timeLimit, maxDist)
        )
        interaction.execute("select max(id) from games")
        return interaction.fetchone()[0]
示例#5
0
    def insertAccount(self, interaction, name, pictureUrl, friends, facebookId, token):
        try:
            interaction.execute(
                "insert or fail into accounts (name,pictureUrl,token) values (?,?,?)",
                (name, pictureUrl, Utility.hashToken(token))
            )
            interaction.execute("select max(id) from accounts")
            userId = interaction.fetchone()[0]

            if facebookId is not None:
                interaction.execute("update accounts set facebookId=? where id=?", (facebookId, userId))

            for friend in friends:
                interaction.execute(
                    "insert or ignore into friends (id,userId1,userId2,pending) values (null,?,?,0)", (userId, friend)
                )

            return userId
        except IntegrityError:
            return None
示例#6
0
 def render_GET(self, request):
     request.defaultContentType = "application/json"
     try:
         id = request.args["id"][0]
         token = request.args["token"][0]
         playtime = int(request.args["playtime"][0])
         self.__cp.runQuery("update accounts set playtime = ? where id=? and token=?",(playtime, id, Utility.hashToken(token))).addCallback(self.playtimeUpdated, request)
         return NOT_DONE_YET
     except KeyError:
         return json.dumps({"error" : "not all arguments set"})
示例#7
0
 def render_GET(self, request):
     request.defaultContentType = "application/json"
     try:
         id = request.args["id"][0]
         token = request.args["token"][0]
         result = self.__cp.runQuery("delete from accounts where id=? and token=?", (id, Utility.hashToken(token)))
         result.addCallback(self.accountDeleted, request)
         return NOT_DONE_YET
     except KeyError:
         return json.dumps({"error" : "not all arguments set"})
示例#8
0
 def render_GET(self, request):
     request.defaultContentType = "application/json"
     try:
         id = request.args["id"][0]
         token = request.args.get("token",[None])[0]
         if token is None:
             result = self.__cp.runQuery("select id, facebookId, name, pictureUrl, wins, losses, highscore from accounts where id = ?", (id,))
             result.addCallback(self.accountSelected, request, False)
         else:
             result = self.__cp.runQuery("select id, facebookId, name, pictureUrl, wins, losses, highscore, playtime from accounts where id = ? and token = ?", (id, Utility.hashToken(token)))
             result.addCallback(self.accountSelected, request, True)
         return NOT_DONE_YET 
     except KeyError:
         return json.dumps({"error" : "not all arguments set"})