optimize class dependencies.

This commit is contained in:
2023-05-10 14:46:08 +09:00
parent 0281dd2ccb
commit dd0b0ba68f
12 changed files with 136 additions and 133 deletions

View File

@ -11,7 +11,7 @@ from mdrsclient.exceptions import (
UnauthorizedException,
UnexpectedException,
)
from mdrsclient.models import DRFStandardizedErrors
from mdrsclient.models.error import DRFStandardizedErrors
class BaseApi(ABC):
@ -20,21 +20,6 @@ class BaseApi(ABC):
def __init__(self, connection: MDRSConnection) -> None:
self.connection = connection
def _get(self, url, *args, **kwargs) -> Response:
return self.connection.session.get(self.__build_url(url), *args, **kwargs)
def _post(self, url, *args, **kwargs) -> Response:
return self.connection.session.post(self.__build_url(url), *args, **kwargs)
def _put(self, url, *args, **kwargs) -> Response:
return self.connection.session.put(self.__build_url(url), *args, **kwargs)
def _delete(self, url, *args, **kwargs) -> Response:
return self.connection.session.delete(self.__build_url(url), *args, **kwargs)
def _patch(self, url, *args, **kwargs) -> Response:
return self.connection.session.patch(self.__build_url(url), *args, **kwargs)
def _raise_response_error(self, response: Response) -> None:
if response.status_code >= 300:
if response.status_code < 400 or response.status_code >= 500:
@ -48,6 +33,3 @@ class BaseApi(ABC):
raise ForbiddenException("You do not have enough permissions. Access is denied.")
else:
raise UnexpectedException(errors.errors[0].detail)
def __build_url(self, *args: tuple) -> str:
return self.connection.build_url(*args)

View File

@ -21,7 +21,7 @@ class FileApi(BaseApi):
# print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT + id + "/"
token_check(self.connection)
response = self._get(url)
response = self.connection.get(url)
self._raise_response_error(response)
return parse_obj_as(File, response.json())
@ -32,7 +32,7 @@ class FileApi(BaseApi):
data = {"folder_id": folder_id}
try:
with open(path, mode="rb") as fp:
response = self._post(url, data=data, files={"file": fp})
response = self.connection.post(url, data=data, files={"file": fp})
self._raise_response_error(response)
ret = parse_obj_as(FileCreateResponse, response.json())
except OSError:
@ -47,13 +47,13 @@ class FileApi(BaseApi):
# update file body
try:
with open(path, mode="rb") as fp:
response = self._put(url, files={"file": fp})
response = self.connection.put(url, files={"file": fp})
except OSError:
raise UnexpectedException(f"Could not open `{path}` file.")
else:
# update metadata
data = {"name": file.name, "description": file.description}
response = self._put(url, data=data)
response = self.connection.put(url, data=data)
self._raise_response_error(response)
return True
@ -61,7 +61,7 @@ class FileApi(BaseApi):
# print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT + file.id + "/"
token_check(self.connection)
response = self._delete(url)
response = self.connection.delete(url)
self._raise_response_error(response)
return True
@ -70,7 +70,7 @@ class FileApi(BaseApi):
url = self.ENTRYPOINT + file.id + "/move/"
data = {"folder": folder_id}
token_check(self.connection)
response = self._post(url, data=data)
response = self.connection.post(url, data=data)
self._raise_response_error(response)
return True
@ -78,14 +78,14 @@ class FileApi(BaseApi):
# print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT + file.id + "/metadata/"
token_check(self.connection)
response = self._get(url)
response = self.connection.get(url)
self._raise_response_error(response)
return response.json()
def download(self, file: File, path: str) -> bool:
# print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = "v2/" + file.download_url
response = self._get(url, stream=True)
response = self.connection.get(url, stream=True)
self._raise_response_error(response)
try:
with open(path, "wb") as f:

View File

@ -21,7 +21,7 @@ class FolderApi(BaseApi):
url = self.ENTRYPOINT
params = {"path": path, "laboratory_id": laboratory_id}
token_check(self.connection)
response = self._get(url, params=params)
response = self.connection.get(url, params=params)
self._raise_response_error(response)
ret: list[FolderSimple] = []
for data in response.json():
@ -32,7 +32,7 @@ class FolderApi(BaseApi):
# print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT + id + "/"
token_check(self.connection)
response = self._get(url)
response = self.connection.get(url)
self._raise_response_error(response)
ret = parse_obj_as(Folder, response.json())
return ret
@ -42,7 +42,7 @@ class FolderApi(BaseApi):
url = self.ENTRYPOINT
data = {"name": name, "parent_id": parent_id, "description": "", "template_id": -1}
token_check(self.connection)
response = self._post(url, data=data)
response = self.connection.post(url, data=data)
self._raise_response_error(response)
ret = parse_obj_as(FolderCreateResponse, response.json())
return ret.id
@ -55,7 +55,7 @@ class FolderApi(BaseApi):
"description": folder.description,
}
token_check(self.connection)
response = self._put(url, data=data)
response = self.connection.put(url, data=data)
self._raise_response_error(response)
return True
@ -63,7 +63,7 @@ class FolderApi(BaseApi):
# print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT + id + "/"
token_check(self.connection)
response = self._delete(url)
response = self.connection.delete(url)
self._raise_response_error(response)
return True
@ -72,7 +72,7 @@ class FolderApi(BaseApi):
url = self.ENTRYPOINT + folder.id + "/move/"
data = {"parent": folder_id}
token_check(self.connection)
response = self._post(url, data=data)
response = self.connection.post(url, data=data)
self._raise_response_error(response)
return True
@ -80,6 +80,6 @@ class FolderApi(BaseApi):
# print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT + id + "/metadata/"
token_check(self.connection)
response = self._get(url)
response = self.connection.get(url)
self._raise_response_error(response)
return response.json()

View File

@ -14,9 +14,9 @@ class LaboratoryApi(BaseApi):
# print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT
token_check(self.connection)
response = self._get(url)
response = self.connection.get(url)
self._raise_response_error(response)
ret = Laboratories([])
ret = Laboratories()
for data in response.json():
ret.append(parse_obj_as(Laboratory, data))
return ret

View File

@ -22,7 +22,7 @@ class UserApi(BaseApi):
# print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT + "auth/"
data = {"username": username, "password": password}
response = self._post(url, data=data)
response = self.connection.post(url, data=data)
if response.status_code == requests.codes.unauthorized:
raise UnauthorizedException("Invalid username or password.")
self._raise_response_error(response)
@ -35,7 +35,7 @@ class UserApi(BaseApi):
# print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT + "refresh/"
data = {"refresh": token.refresh}
response = self._post(url, data=data)
response = self.connection.post(url, data=data)
if response.status_code == requests.codes.unauthorized:
raise UnauthorizedException("Token is invalid or expired.")
self._raise_response_error(response)