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