mirror of
https://github.com/tgbot-collection/YYeTsBot.git
synced 2025-11-25 03:15:05 +08:00
avatar 不用base64
This commit is contained in:
2
YYeTsFE
2
YYeTsFE
Submodule YYeTsFE updated: e2a3426462...d816233cb2
@@ -74,13 +74,6 @@ class Mongo:
|
||||
def is_old_user(self, username: str) -> bool:
|
||||
return bool(self.db["users"].find_one({"username": username, "oldUser": True}))
|
||||
|
||||
@staticmethod
|
||||
def b64_image(img):
|
||||
if not img:
|
||||
return ""
|
||||
mime = filetype.guess_mime(img) or "image/jpeg"
|
||||
return f"data:{mime};base64,{base64.b64encode(img).decode('utf-8')}"
|
||||
|
||||
|
||||
class FakeMongoResource:
|
||||
pass
|
||||
@@ -198,7 +191,7 @@ class CommentMongoResource(CommentResource, Mongo):
|
||||
user = self.db["users"].find_one({"username": username}) or {}
|
||||
group = user.get("group", ["user"])
|
||||
comment["group"] = group
|
||||
comment["avatar"] = self.b64_image(user.get("avatar", b""))
|
||||
comment["hasAvatar"] = bool(user.get("avatar"))
|
||||
if username in whitelist:
|
||||
comment["group"].append("publisher")
|
||||
|
||||
@@ -620,7 +613,7 @@ class ResourceMongoResource(ResourceResource, Mongo):
|
||||
"resourceID": comment_rid,
|
||||
"resourceName": d["data"]["info"]["cnname"],
|
||||
"origin": "comment",
|
||||
"avatar": c["avatar"],
|
||||
"hasAvatar": c["avatar"],
|
||||
}
|
||||
)
|
||||
|
||||
@@ -814,7 +807,7 @@ class UserMongoResource(UserResource, Mongo):
|
||||
projection = {"_id": False, "password": False}
|
||||
data = self.db["users"].find_one({"username": username}, projection)
|
||||
data.update(group=data.get("group", ["user"]))
|
||||
data["avatar"] = self.b64_image(data.get("avatar", b""))
|
||||
data["hasAvatar"] = bool(data.pop("avatar", None))
|
||||
return data
|
||||
|
||||
def update_user_last(self, username: str, now_ip: str) -> None:
|
||||
@@ -877,7 +870,8 @@ class UserAvatarMongoResource(UserMongoResource, Mongo):
|
||||
def get_avatar(self, username):
|
||||
user = self.db["users"].find_one({"username": username})
|
||||
img = user.get("avatar", b"")
|
||||
return self.b64_image(img)
|
||||
mime = filetype.guess_mime(img)
|
||||
return {"image": img, "content_type": mime}
|
||||
|
||||
|
||||
class DoubanMongoResource(DoubanResource, Mongo):
|
||||
|
||||
@@ -239,29 +239,36 @@ class UserAvatarHandler(BaseHandler):
|
||||
# instance = UserMongoResource()
|
||||
|
||||
@run_on_executor()
|
||||
def avatar(self) -> dict:
|
||||
def update_avatar(self):
|
||||
username = self.get_current_user()
|
||||
if not username:
|
||||
self.set_status(HTTPStatus.UNAUTHORIZED)
|
||||
self.clear_cookie("username")
|
||||
return {"message": "Please try to login"}
|
||||
|
||||
if self.request.method == "POST":
|
||||
file = self.request.files["image"][0]['body']
|
||||
if len(file) > 10 * 1024 * 1024:
|
||||
self.set_status(HTTPStatus.REQUEST_ENTITY_TOO_LARGE)
|
||||
return {"message": "图片大小不可以超过10MB"}
|
||||
return self.instance.add_avatar(username, file)
|
||||
return self.instance.get_avatar(username)
|
||||
file = self.request.files["image"][0]['body']
|
||||
if len(file) > 10 * 1024 * 1024:
|
||||
self.set_status(HTTPStatus.REQUEST_ENTITY_TOO_LARGE)
|
||||
return {"message": "图片大小不可以超过10MB"}
|
||||
return self.instance.add_avatar(username, file)
|
||||
|
||||
@run_on_executor()
|
||||
def get_avatar(self, username):
|
||||
data = self.instance.get_avatar(username)
|
||||
if data["image"]:
|
||||
self.set_header("Content-Type", data["content_type"])
|
||||
return data["image"]
|
||||
self.set_status(HTTPStatus.NOT_FOUND)
|
||||
return b""
|
||||
|
||||
@gen.coroutine
|
||||
def post(self):
|
||||
resp = yield self.avatar()
|
||||
def post(self, _):
|
||||
resp = yield self.update_avatar()
|
||||
self.write(resp)
|
||||
|
||||
@gen.coroutine
|
||||
def get(self):
|
||||
resp = yield self.avatar()
|
||||
def get(self, username):
|
||||
resp = yield self.get_avatar(username)
|
||||
self.write(resp)
|
||||
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ class RunServer:
|
||||
(r'/api/top', TopHandler),
|
||||
(r'/api/like', LikeHandler),
|
||||
(r'/api/user', UserHandler),
|
||||
(r'/api/user/avatar', UserAvatarHandler),
|
||||
(r'/api/user/avatar/?(.*)', UserAvatarHandler),
|
||||
(r'/api/user/email', UserEmailHandler),
|
||||
(r'/api/name', NameHandler),
|
||||
(r'/api/comment', CommentHandler),
|
||||
|
||||
Reference in New Issue
Block a user