diff options
author | lonkaars <l.leblansch@gmail.com> | 2021-03-13 12:20:47 +0100 |
---|---|---|
committer | lonkaars <l.leblansch@gmail.com> | 2021-03-13 12:20:47 +0100 |
commit | c5cf5b432aa49df55de8a58c176dae3eb0923754 (patch) | |
tree | d643ff200b29599ef8c271420df82927cb6bb83a /api | |
parent | 056b77e82c72136170084ef0addba013eae22c9d (diff) |
friend status + recentgames key prop
Diffstat (limited to 'api')
-rw-r--r-- | api/api.ts | 1 | ||||
-rw-r--r-- | api/user/info.py | 40 |
2 files changed, 32 insertions, 9 deletions
@@ -6,6 +6,7 @@ export interface userInfo { registered?: number, type?: string, username?: string, + relation?: "none"|"friends"|"incoming"|"outgoing"|"blocked", }; export type ruleset = { diff --git a/api/user/info.py b/api/user/info.py index 6dc48f1..e720e56 100644 --- a/api/user/info.py +++ b/api/user/info.py @@ -3,7 +3,22 @@ from db import cursor from auth.login_token import token_login import json -def format_user(user_id): +def valid_user_id(user_id): + query = cursor.execute("select user_id from users where user_id = ?", [user_id]).fetchone() + return bool(query) + +def get_relation_to(user_1_id, user_2_id): + relation = cursor.execute("select * from social where " + \ + "(user_1_id = ? and user_2_id = ?) or " + \ + "(user_1_id = ? and user_2_id = ?)", [user_1_id, user_2_id, user_2_id, user_1_id]).fetchone() + if not relation: return "none" + if relation[2] == "friendship": return "friends" + if relation[2] == "outgoing" and relation[0] == user_1_id: return "outgoing" + if relation[2] == "outgoing" and relation[1] == user_1_id: return "incoming" + if relation[2] == "block" and relation[0] == user_1_id: return "blocked" + return "none" + +def format_user(user_id, viewer = ''): user = cursor.execute("select " + ", ".join([ "username", "user_id", @@ -12,7 +27,7 @@ def format_user(user_id): "avatar", "status", ]) + " from users where user_id = ?", [user_id]).fetchone() - return { + formatted_user = { "username": user[0], "id": user[1], "country": user[2], @@ -20,6 +35,9 @@ def format_user(user_id): "avatar": user[4], "status": user[5], } + if viewer: + formatted_user["relation"] = get_relation_to(viewer, user_id) + return formatted_user info = Blueprint('info', __name__) @@ -31,24 +49,28 @@ def index(): username = data.get("username") or "" user_id = data.get("id") or "" token = request.cookies.get("token") or "" + viewer = "" if not username and \ not user_id and \ not token: return "", 400 - if token and not (username or user_id): - user_id = token_login(token) - - if username and not user_id: + if username: temp_user_id = cursor.execute("select user_id from users where username = ?", [username]).fetchone() if len(temp_user_id) > 0: user_id = temp_user_id - user = format_user(user_id) + if token: + self_id = token_login(token) + if not (username or user_id): + user_id = self_id + if user_id: + viewer = self_id - if not user: return "", 403 + if user_id and not valid_user_id(user_id): return "", 403 + user = format_user(user_id, viewer) #TODO: rating uitrekenen zodra er game functionaliteit is - return user + return user, 200 dynamic_route = ["/user", info] |