From 7ad4c4a45d9ce21e164f0dcfb5e22b23b97c1b31 Mon Sep 17 00:00:00 2001 From: lonkaars Date: Sun, 14 Mar 2021 14:21:11 +0100 Subject: avatar endpoint for serving avatars :tada: --- .gitignore | 2 ++ api/user/avatar.py | 31 +++++++++++++++++++++++++++++++ database/avatars/default.png | Bin 0 -> 3135 bytes 3 files changed, 33 insertions(+) create mode 100644 api/user/avatar.py create mode 100644 database/avatars/default.png diff --git a/.gitignore b/.gitignore index 6575885..a151bb5 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,8 @@ ENV/ database/*.db database/*.db-journal database/*.sqlext +database/avatars/* +!database/avatars/default.png # node / ts *.js diff --git a/api/user/avatar.py b/api/user/avatar.py new file mode 100644 index 0000000..b0d2701 --- /dev/null +++ b/api/user/avatar.py @@ -0,0 +1,31 @@ +from flask import Blueprint, request, Response +from db import cursor +from auth.login_token import token_login +from user.info import valid_user_id +from os.path import exists + +default_avatar = open("database/avatars/default.png", "rb").read() + +avatar = Blueprint('avatar', __name__) + +@avatar.route('/avatar', methods = ["GET"]) +def get_avatar(): + token = request.cookies.get("token") or "" + login = token_login(token) or "" + + user_id = request.args.get("id") or login + if not user_id: return "", 400 + if not valid_user_id(user_id): return "", 403 + + avatar_path = f"database/avatars/{user_id}.png" + avatar = "" + if exists(avatar_path): + avatar = open(avatar_path, "rb").read() + return Response(avatar or default_avatar, 200, mimetype="image/png") + +@avatar.route('/avatar', methods = ["POST"]) #TODO: pillow image size validation (client side resize) +def update_avatar(): + return "", 200 + +dynamic_route = ["/user", avatar] + diff --git a/database/avatars/default.png b/database/avatars/default.png new file mode 100644 index 0000000..ae6313e Binary files /dev/null and b/database/avatars/default.png differ -- cgit v1.2.3