An error occurred while loading the file. Please try again.
__init__.py 2.76 KiB
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"