diff options
Diffstat (limited to 'api/user')
| -rw-r--r-- | api/user/info.py | 40 | 
1 files changed, 31 insertions, 9 deletions
| 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] |