from python_yapi.base import ApiBase
[docs]class UserMixIn(ApiBase):
[docs] def login(self, email: str, password: str) -> dict:
"""
Login YApi
:param email: user email
:param password: user password
:return: JSON response body as dictionary
eg: {'add_time': 1688116008,
'email': 'zhangsan@126.com',
'role': 'member',
'study': False,
'type': 'site',
'uid': 15,
'up_time': 1688116008,
'username': 'zhangsan'}
"""
url = '/api/user/login'
payload = {"email": email, "password": password}
return self.post(url, json=payload)
[docs] def logout(self):
url = '/api/user/logout'
return self.get(url)
[docs] def register(self, username: str, email: str, password: str) -> dict:
"""
:param username:
:param email:
:param password:
:return:
eg: {'add_time': 1688116008,
'email': 'zhangsan@126.com',
'role': 'member',
'study': False,
'type': 'site',
'uid': 15,
'up_time': 1688116008,
'username': 'zhangsan'}
"""
url = '/api/user/reg'
payload = {"username": username, "email": email, "password": password}
return self.post(url, json=payload)
[docs] def find_user(self, uid: int):
"""
Find a user by uid.
:param uid: user id
:return: user data
eg: {"uid": 13,
"username": "superhin",
"email": "superhin@126.com",
"role": "member",
"type": "site",
"add_time": 1687943141,
"up_time": 1687943146}
"""
url = '/api/user/find'
params = {"id": uid}
return self.get(url, params=params)
[docs] def get_user_status(self):
"""
Get user status.
:return:
eg:{ "_id": 15,
"username": "zhangsan",
"email": "zhangsan@126.com",
"up_time": 1688116008,
"add_time": 1688116008,
"role": "member",
"type": "site",
"study": false}
"""
url = '/api/user/status'
return self.get(url)
[docs] def up_study(self):
url = '/api/user/up_study'
return self.get(url)
[docs] def update_user(self, uid: int, username: str = None, email: str = None):
"""
Update user info
:param uid: user id
:param username: username
:param email: user email
:return:
"""
url = '/api/user/update'
payload = {"uid": uid}
if username is not None:
payload['username'] = username
if email is not None:
payload['email'] = email
return self.post(url, json=payload)
[docs] def change_password(self, uid: int, old_password: str, password: str):
"""
Change password.
:param uid: user id
:param old_password: user original password
:param password: user new password
:return:
"""
url = '/api/user/change_password'
payload = {"uid": uid, "password": password, "old_password": old_password}
return self.post(url, json=payload)