def validate_access_token(self, client_key, resource_owner_key): token = None client = Client.query(Client.client_key == client_key).get() if client: token = AccessToken.query( AccessToken.client == client.key, AccessToken.token == resource_owner_key).get() return token is not None
def get_access_token_secret(self, client_key, resource_owner_key): client = Client.query(Client.client_key == client_key).get() if client: token = AccessToken.query( AccessToken.client == client.key, AccessToken.token == resource_owner_key).get() if token: return token.secret return None
def validate_realm(self, client_key, access_token, uri=None, required_realm=None): if not required_realm: return True client = Client.query(Client.client_key == client_key).get() if client: token = AccessToken.query( AccessToken.token == access_token, AccessToken.client == client.key).get() if token: return token.realm in required_realm return False
def validate_realm(self, client_key, access_token, uri=None, required_realm=None): if not required_realm: return True client = Client.query(Client.client_key == client_key).get() if client: token = AccessToken.query(AccessToken.token == access_token, AccessToken.client == client.key).get() if token: return token.realm in required_realm return False
def save_timestamp_and_nonce(self, client_key, timestamp, nonce, request_token=None, access_token=None): client = Client.query(Client.client_key == client_key).get() if client: nonce = Nonce( nonce=nonce, timestamp=timestamp, client=client.key) if request_token: req_token = RequestToken.query( RequestToken.token == request_token).get() nonce.request_token = req_token.key if access_token: token = AccessToken.query( AccessToken.token == access_token).get() nonce.access_token = token.key nonce.put()
def save_timestamp_and_nonce(self, client_key, timestamp, nonce, request_token=None, access_token=None): client = Client.query(Client.client_key == client_key).get() if client: nonce = Nonce(nonce=nonce, timestamp=timestamp, client=client.key) if request_token: req_token = RequestToken.query( RequestToken.token == request_token).get() nonce.request_token = req_token.key if access_token: token = AccessToken.query( AccessToken.token == access_token).get() nonce.access_token = token.key nonce.put()
def user(): """ Hakee, lisää ja poistaa käyttäjän seuraamia pelaajia/joukkueita. Vaatii OAuth-allekirjoitetun pyynnön. TODO välimuisti """ # Poimitaan oauth token HTTP-pyynnön Authorization-headerista: auth_header = request.headers.get("Authorization", None) if not auth_header: abort(401) # Unauthorized for param in auth_header.split(): if param.startswith("oauth_token"): token = param.split("=")[-1][1:-2] break if not token: abort(401) # Haetaan tokenia vastaava käyttäjä: try: acc_token = AccessToken.query(AccessToken.token == token).get() user = acc_token.resource_owner.get() except KeyError: # Access tokenia tai käyttäjää ei löydy abort(401) # Poimitaan ids_only-parametri joko urlista tai post-parametreista: if "ids_only" in request.form: ids_only = request.form["ids_only"] else: ids_only = request.args.get("ids_only", "0") try: ids_only = int(ids_only) except ValueError: abort(400) if request.method == "GET": # Palautetaan käyttäjän seuraamat pelaajat ja joukkueet: if ids_only: # Palautetaan vain id:t: ret = dict(players=user.players, teams=user.teams) else: # Jos ids_only == 1, palautetaan tunnusten lisäksi tilastoja: ret = get_players_and_teams(user.players, user.teams) ret["name"] = user.name return jsonify(ret) if request.method == "POST": # Lisätään seurattava pelaaja tai joukkue: if "pid" in request.form: pid = request.form["pid"] # Validoitaan pelaajan id: if pid in user.players: abort(400) # Pelaaja on jo seurattavien listassa all_players = scraper.scrape_players() if not pid in all_players: abort(400) # pid:tä vastaavaa pelaajaa ei löydy # Lisätään pid käyttäjän seurattavien pelaajien listalle: user.players.append(pid) user.put() # Palautetaan päivittynyt seurantalista, kuten GET-pyynnössä: if ids_only: ret = dict(players=user.players, teams=user.teams) else: ret = get_players_and_teams(user.players, user.teams) ret["name"] = user.name return jsonify(ret) if "team" in request.form: team = request.form["team"].lower() # Validoitaan joukkueen tunnus if team in user.teams: abort(400) # Joukkue on jo seurattavien listassa if not team in scraper.TEAMS: abort(400) # Epäkelpo joukkueen tunnus # Lisätään joukkue käyttäjän seurattavien joukkueiden listalle: user.teams.append(team) user.put() # Palautetaan päivittynyt seurantalista, kuten GET-pyynnössä: if ids_only: ret = dict(players=user.players, teams=user.teams) else: ret = get_players_and_teams(user.players, user.teams) ret["name"] = user.name return jsonify(ret) else: abort(400) # Lisättävä pelaaja tai joukkue tulee määrittää if request.method == "DELETE": # Poistetaan seurattava pelaaja tai joukkue: pid = request.args.get("pid", None) team = request.args.get("team", None) if pid: if not pid in user.players: abort(400) # pelaajaa ei löydy seurattavien listasta user.players.remove(pid) elif team: if not team in user.teams: abort(400) # joukkuetta ei löydy seurattavien listasta user.teams.remove(team) else: abort(400) # joko poistettava pelaaja tai joukkue tulee määrittää user.put() if ids_only: ret = dict(players=user.players, teams=user.teams) else: ret = get_players_and_teams(user.players, user.teams) ret["name"] = user.name return jsonify(ret)