121 lines
4.2 KiB
Python
121 lines
4.2 KiB
Python
"""
|
|
Response codes and messages enumeration for standardized API responses
|
|
|
|
This module contains all response codes and messages used across the application.
|
|
Codes are 5-digit numbers:
|
|
- 10000-19999: Success codes
|
|
- 20000-29999: Error codes
|
|
"""
|
|
|
|
from enum import IntEnum, Enum
|
|
|
|
|
|
class ResponseCode(IntEnum):
|
|
"""Response codes enumeration (5-digit numbers)"""
|
|
|
|
SUCCESS = 10000
|
|
EMAIL_SENT_REGISTER = 10001
|
|
EMAIL_SENT_LOGIN = 10002
|
|
REGISTRATION_SUCCESS = 10003
|
|
LOGIN_SUCCESS = 10004
|
|
PASSWORD_CHANGED = 10005
|
|
PASSWORD_SET = 10006
|
|
EMAIL_CHANGE_CODE_SENT = 10007
|
|
EMAIL_CHANGED = 10008
|
|
PARAMETER_ERROR = 20001
|
|
EMAIL_EMPTY = 20002
|
|
EMAIL_SEND_FAILED = 20003
|
|
VERIFICATION_CODE_EXPIRED = 20004
|
|
USER_DATA_INVALID = 20005
|
|
VERIFICATION_CODE_ERROR = 20006
|
|
LOGIN_VERIFICATION_EXPIRED = 20007
|
|
LOGIN_VERIFICATION_ERROR = 20008
|
|
SERVER_INTERNAL_ERROR = 20009
|
|
OLD_PASSWORD_ERROR = 20010
|
|
PASSWORD_MISMATCH = 20011
|
|
PASSWORD_TOO_SHORT = 20012
|
|
PASSWORD_TOO_WEAK = 20013
|
|
EMAIL_SAME_AS_OLD = 20014
|
|
EMAIL_ALREADY_IN_USE = 20015
|
|
RESET_CODE_SENT = 10009
|
|
PASSWORD_RESET_SUCCESS = 10010
|
|
VALIDATION_ERROR = 20016
|
|
NOT_FOUND = 20017
|
|
USER_NOT_FOUND = 20018
|
|
CAPTCHA_ERROR = 20020
|
|
CAPTCHA_EXPIRED = 20021
|
|
CAPTCHA_REQUIRED = 20022
|
|
EMAIL_DOMAIN_INVALID = 20023
|
|
|
|
|
|
class ResponseMessage:
|
|
"""Response messages enumeration (static class)"""
|
|
|
|
SUCCESS = 'Success'
|
|
EMAIL_SENT_REGISTER = '账号未注册,已发送注册邮件'
|
|
EMAIL_SENT_LOGIN = '邮件发送成功'
|
|
REGISTRATION_SUCCESS = '注册成功'
|
|
LOGIN_SUCCESS = '登录成功'
|
|
PASSWORD_CHANGED = '密码修改成功'
|
|
PASSWORD_SET = '密码设置成功'
|
|
EMAIL_CHANGE_CODE_SENT = '验证码已发送至邮箱'
|
|
EMAIL_CHANGED = '邮箱修改成功'
|
|
PARAMETER_ERROR = '参数异常'
|
|
EMAIL_EMPTY = '邮箱地址不能为空'
|
|
EMAIL_SEND_FAILED = '邮件发送失败'
|
|
VERIFICATION_CODE_EXPIRED = '验证码已过期或未发送'
|
|
USER_DATA_INVALID = '用户数据验证失败'
|
|
VERIFICATION_CODE_ERROR = '验证码错误'
|
|
LOGIN_VERIFICATION_EXPIRED = '验证码已过期或未发送'
|
|
LOGIN_VERIFICATION_ERROR = '验证码错误'
|
|
SERVER_INTERNAL_ERROR = '服务器内部错误'
|
|
OLD_PASSWORD_ERROR = '当前密码错误'
|
|
PASSWORD_MISMATCH = '两次输入的新密码不一致'
|
|
PASSWORD_TOO_SHORT = '密码长度不能少于8位'
|
|
PASSWORD_TOO_WEAK = '密码必须包含字母和数字'
|
|
EMAIL_SAME_AS_OLD = '新邮箱与当前邮箱相同'
|
|
EMAIL_ALREADY_IN_USE = '该邮箱已被其他账号使用'
|
|
RESET_CODE_SENT = '重置密码验证码已发送至邮箱'
|
|
PASSWORD_RESET_SUCCESS = '密码重置成功'
|
|
VALIDATION_ERROR = '数据验证失败'
|
|
NOT_FOUND = '资源不存在'
|
|
USER_NOT_FOUND = '该邮箱未注册'
|
|
CAPTCHA_ERROR = '验证码错误'
|
|
CAPTCHA_EXPIRED = '验证码已过期,请重新获取'
|
|
CAPTCHA_REQUIRED = '操作过于频繁,请输入验证码'
|
|
EMAIL_DOMAIN_INVALID = '邮箱域名不存在,请输入真实邮箱地址'
|
|
|
|
|
|
def get_response_message(code: ResponseCode) -> str:
|
|
"""Get the corresponding message for a response code."""
|
|
return getattr(ResponseMessage, code.name, str(code))
|
|
|
|
|
|
SUCCESS = 200
|
|
SERVER_INTERNAL_ERROR = 500
|
|
|
|
|
|
def create_standardized_response(data=None, code=None, status_code=200, message=None):
|
|
"""Create a standardized success response."""
|
|
from rest_framework.response import Response
|
|
response_data = {}
|
|
if data is not None:
|
|
response_data['data'] = data
|
|
if code is not None:
|
|
response_data['code'] = int(code)
|
|
response_data['message'] = message or get_response_message(code)
|
|
return Response(response_data, status=status_code)
|
|
|
|
|
|
def create_standardized_error_response(data=None, code=None, status_code=400, message=None):
|
|
"""Create a standardized error response."""
|
|
from rest_framework.response import Response
|
|
response_data = {}
|
|
if data is not None:
|
|
response_data['data'] = data
|
|
if code is not None:
|
|
response_data['code'] = int(code)
|
|
response_data['message'] = message or get_response_message(code)
|
|
else:
|
|
response_data['message'] = message or 'Unknown error'
|
|
return Response(response_data, status=status_code) |