m-gm/framework/open_response.py
2025-03-19 18:02:29 +08:00

73 lines
2.3 KiB
Python

from abc import ABC
from framework.response_code import ResponseCode, MinCustomException
from datetime import datetime
from flask import request
import hashlib
class OpenABC(ABC):
"""
提供公共函数和功能函数
"""
def __init__(self):
self.response_code_enum: ResponseCode = ResponseCode
@staticmethod
def call_datetime(need_str: bool = True):
return str(datetime.now()) if need_str else datetime.now()
@staticmethod
def md5sum(string: str):
md5 = hashlib.md5()
password = string.encode("utf-8")
md5.update(password)
return md5.hexdigest()
@staticmethod
def make_exception(error_code: ResponseCode):
raise MinCustomException(error_code)
class OpenResponse(OpenABC):
def __init__(self):
super(OpenResponse, self).__init__()
self._response_code = self.response_code_enum.RESPONSE_100_CONTINUE # 错误代码, 默认Continue
self._response_data = None # 返回的数据
self.response: dict = {}
self.echo = False # 是否打印消息
self._handle_success: bool = False
def make_response(self, use_custom_context: bool = False) -> dict:
if use_custom_context:
return self._response_data
response_code: ResponseCode = self._response_code
err_code, err_message = response_code.return_tuple()
self.response = {"code": err_code, "message": err_message}
if self._response_data is not None:
self.response.update({"data": self._response_data})
if self.echo is True:
print("-" * 50)
print("Interface ERROR:")
print(f"Echo url: {request.url}")
print(f"Echo methods: {request.method}")
if request.method == "GET":
print(f"Echo params: {request.args}")
elif request.method == "POST":
print(f"Echo data: {request.data}")
print(f"Echo response: {self.response}")
return self.response
def set_response_data(self, data: object):
self._response_data = data
self._handle_success = True
def set_response_code(self, code_enum: ResponseCode):
self._response_code = code_enum
def make_debug_response(self):
raise MinCustomException(self.response_code_enum.RESPONSE_201_DEBUG)