mdrs-client-python/mdrsclient/api/folder.py

87 lines
3.1 KiB
Python
Raw Normal View History

2023-05-01 20:00:32 +09:00
import sys
from typing import Final
from pydantic import parse_obj_as
from pydantic.dataclasses import dataclass
from mdrsclient.api.base import BaseApi
from mdrsclient.api.utils import token_check
from mdrsclient.models import Folder, FolderSimple
@dataclass(frozen=True)
class FolderCreateResponse:
id: str
class FolderApi(BaseApi):
ENTRYPOINT: Final[str] = "v2/folder/"
def list(self, laboratory_id: int, path: str) -> list[FolderSimple]:
print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT
params = {"path": path, "laboratory_id": laboratory_id}
token_check(self.connection)
2023-05-01 20:00:32 +09:00
response = self._get(url, params=params)
self._raise_response_error(response)
ret: list[FolderSimple] = []
for data in response.json():
ret.append(parse_obj_as(FolderSimple, data))
return ret
def retrieve(self, id: str) -> Folder:
print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT + id + "/"
token_check(self.connection)
2023-05-01 20:00:32 +09:00
response = self._get(url)
self._raise_response_error(response)
ret = parse_obj_as(Folder, response.json())
return ret
def create(self, name: str, parent_id: str) -> str:
print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT
data = {"name": name, "parent_id": parent_id, "description": "", "template_id": -1}
token_check(self.connection)
2023-05-01 20:00:32 +09:00
response = self._post(url, data=data)
self._raise_response_error(response)
ret = parse_obj_as(FolderCreateResponse, response.json())
return ret.id
def update(self, folder: FolderSimple) -> bool:
print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT + folder.id + "/"
2023-05-01 20:00:32 +09:00
data = {
"name": folder.name,
"description": folder.description,
}
token_check(self.connection)
2023-05-01 20:00:32 +09:00
response = self._put(url, data=data)
self._raise_response_error(response)
return True
def destroy(self, id: str) -> bool:
print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT + id + "/"
token_check(self.connection)
2023-05-01 20:00:32 +09:00
response = self._delete(url)
self._raise_response_error(response)
return True
def move(self, folder: FolderSimple, folder_id: str) -> bool:
print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT + folder.id + "/move/"
data = {"parent": folder_id}
token_check(self.connection)
response = self._post(url, data=data)
self._raise_response_error(response)
return True
2023-05-01 20:00:32 +09:00
def metadata(self, id: str) -> dict:
print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
url = self.ENTRYPOINT + id + "/metadata/"
token_check(self.connection)
2023-05-01 20:00:32 +09:00
response = self._get(url)
self._raise_response_error(response)
return response.json()