An error occurred while loading the file. Please try again.
-
Wei Shoulin authoredf276bd9b
import requests
import json
from enum import Enum
class Result(dict):
'''
类Result用于封装返回结果,包含success、message、data三个属性:
success (bool): 是否成功
message (str): 消息
data (any): 数据
'''
__setattr__ = dict.__setitem__
__getattr__ = dict.__getitem__
def __init__(self):
super(Result, self).__init__()
self["code"] = 200
self["message"] = ""
self["data"] = None
@property
def success(self) -> bool:
return self["code"] == 200
@property
def data(self) -> any:
return self["data"]
@property
def message(self) -> str:
return str(self["message"])
@staticmethod
def error(code: int = 500, message: str = "") -> "Result":
r = Result()
r["code"] = code
r["message"] = message
return r
@staticmethod
def ok_data(data = None) -> "Result":
r = Result()
r["code"] = 200
r["data"] = data
return r
@staticmethod
def ok_msg(message: str) -> "Result":
r = Result()
r["message"] = message
return r
def append(self, k: str, v) -> "Result":
self[k] = v
return self
@classmethod
def from_response(cls, resp: requests.Response) -> "Result":
self = cls()
self["code"] = resp.status_code
if self.success:
content_dict = json.loads(resp.content.decode('utf-8'))
if isinstance(content_dict, dict) and 'total_count' in content_dict and 'records' in content_dict:
self["data"] = content_dict['records']
self["total_count"] = content_dict['total_count']
else:
self["data"] = content_dict
self['data'] = DictObject.from_json(self['data'])
self['message'] = resp.url
else:
try:
content_dict = json.loads(resp.content.decode('utf-8'))
self["message"] = content_dict.get("detail", "")
except Exception as _:
self["message"] = resp.content.decode('utf-8')
return self
class DictObject(dict):
def __init__(self, **kwargs):
super(DictObject, self).__init__(**kwargs)
def __getattr__(self, name):
if name in self.keys():
return self[name]
return None
@staticmethod
def from_json(data):
if not data:
return data
if isinstance(data, list):
return [DictObject.from_json(i) for i in data]
elif isinstance(data, dict):
return DictObject(**data)
else:
return data
class ModuleID(Enum):
MSC = "MSC"
IFS = "IFS"
MCI = "MCI"
HSTDM = "HSTDM"
CPIC = "CPIC"