54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
from abc import abstractmethod
|
|
|
|
from ResponseCode import ResponseCode
|
|
|
|
|
|
class ServerHandler(object):
|
|
def __init__(self):
|
|
super(ServerHandler, self).__init__()
|
|
self._response_code: ResponseCode = ResponseCode.RESPONSE_100_CONTINUE
|
|
self._response_message = ""
|
|
self._return_message = {"code": 0, "message": ""}
|
|
self.is_set_response_code = False
|
|
self.is_set_response_message = False
|
|
|
|
@abstractmethod
|
|
def core(self) -> None:
|
|
# TODO: 用于处理核心内容, 数据库逻辑等
|
|
pass
|
|
|
|
@abstractmethod
|
|
def create_response_message(self) -> dict:
|
|
# TODO: 用于创建返回的内容, 以及关闭数据库连接等
|
|
pass
|
|
|
|
def set_response_message(self, message):
|
|
self._response_message = message
|
|
self.is_set_response_message = True
|
|
|
|
def _return_response(self) -> dict:
|
|
self._return_message["code"] = self._response_code.code
|
|
self._return_message["message"] = self._response_code.message
|
|
if self.is_set_response_message:
|
|
self._return_message["data"] = self._response_message
|
|
return self._return_message
|
|
|
|
def set_response_code(self, code_enum: ResponseCode):
|
|
self._response_code = code_enum
|
|
self.is_set_response_code = True
|
|
|
|
def run(self) -> dict:
|
|
try:
|
|
self.core()
|
|
self.create_response_message()
|
|
except Exception as e:
|
|
print(e)
|
|
self.set_response_code(ResponseCode.RESPONSE_500_SERVER_Exception)
|
|
else:
|
|
if not self.is_set_response_code:
|
|
if not self.is_set_response_message:
|
|
self.set_response_code(ResponseCode.RESPONSE_101_NOT_BUILD_MSG)
|
|
else:
|
|
self.set_response_code(ResponseCode.RESPONSE_200_SUCCESS)
|
|
return self._return_response()
|