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()