mirror of https://github.com/yupix/mipac
parent
d77f63706e
commit
b2ff352d5b
@ -0,0 +1,34 @@
|
||||
pre = """from .base import APIError
|
||||
|
||||
|
||||
"""
|
||||
template = """class %sError(APIError):
|
||||
\"\"\" %s \"\"\"
|
||||
"""
|
||||
|
||||
|
||||
def error_name_to_hump(name: str) -> str:
|
||||
return "".join([i.capitalize() for i in name.split("_")])
|
||||
|
||||
|
||||
def gen_errors_py_files():
|
||||
with open("errors.csv", "r", encoding="utf-8") as f:
|
||||
content = f.read()
|
||||
|
||||
content = content.split("\n")[1:]
|
||||
|
||||
error_list = {}
|
||||
for i in content:
|
||||
if i:
|
||||
i = i.split(",")
|
||||
error_list[i[0]] = i[1]
|
||||
|
||||
all_content = [template % (error_name_to_hump(i), value) for i, value in error_list.items()]
|
||||
|
||||
with open("../../mipac/errors/errors.py", "w", encoding="utf-8") as f:
|
||||
f.write(pre + "\n\n".join(all_content))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
gen_errors_py_files()
|
||||
print("Done")
|
|
@ -0,0 +1,2 @@
|
||||
from .base import * # noqa: F403, F401
|
||||
from .errors import * # noqa: F403, F401
|
@ -0,0 +1,38 @@
|
||||
from importlib import import_module
|
||||
from typing import Optional, Union
|
||||
|
||||
|
||||
class APIError(Exception):
|
||||
"""APIのエラー"""
|
||||
def __init__(self, data: Union[dict, str], status: int):
|
||||
self.raw: Union[dict, str] = data
|
||||
self.status: int = status
|
||||
self.code: Optional[str] = None
|
||||
self.id: Optional[str] = None
|
||||
self.message: Optional[str] = None
|
||||
if isinstance(data, dict):
|
||||
error = data.get("error", {})
|
||||
self.code: Optional[str] = error.get("code", "")
|
||||
self.id: Optional[str] = error.get("id")
|
||||
self.message: Optional[str] = error.get("message", "")
|
||||
super().__init__(self.message or self.raw)
|
||||
|
||||
def raise_error(self):
|
||||
if not self.code:
|
||||
raise self
|
||||
if value := getattr(
|
||||
import_module("mipac.errors.errors"),
|
||||
"".join([i.capitalize() for i in self.code.split("_")]) + "Error",
|
||||
None,
|
||||
):
|
||||
raise value(self.raw, self.status)
|
||||
else:
|
||||
raise self
|
||||
|
||||
|
||||
class NotExistRequiredData(Exception):
|
||||
"""クラスの中に必要なデータが不足している"""
|
||||
|
||||
|
||||
class ParameterError(Exception):
|
||||
"""引数に関するエラー"""
|
Loading…
Reference in new issue