1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-30 15:04:18 +00:00
royalnet/royalpack/stars/api_user_avatar.py

38 lines
1.1 KiB
Python

import re
import royalnet.utils as ru
import royalnet.constellation.api as rca
url_validation = re.compile(r'^(?:http|ftp)s?://'
r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|'
r'localhost|'
r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'
r'(?::\d+)?'
r'(?:/?|[/?]\S+)$', re.IGNORECASE)
class ApiUserAvatarStar(rca.ApiStar):
path = "/api/user/avatar/v2"
parameters = {
"put": {
"avatar_url": "The url that the user wants to set as avatar."
}
}
auth = {
"put": True,
}
tags = ["user"]
@rca.magic
async def put(self, data: rca.ApiData) -> ru.JSON:
"""Set the avatar of current user."""
avatar_url = data["avatar_url"]
user = await data.user()
if not re.match(url_validation, avatar_url):
raise rca.InvalidParameterError("avatar_url is not a valid url.")
user.avatar_url = avatar_url
await data.session_commit()
return user.json()