first commit
This commit is contained in:
77
mdrsclient/api/folder.py
Normal file
77
mdrsclient/api/folder.py
Normal file
@ -0,0 +1,77 @@
|
||||
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.session)
|
||||
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.session)
|
||||
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.session)
|
||||
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
|
||||
data = {
|
||||
"name": folder.name,
|
||||
"description": folder.description,
|
||||
}
|
||||
token_check(self.session)
|
||||
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.session)
|
||||
response = self._delete(url)
|
||||
self._raise_response_error(response)
|
||||
return True
|
||||
|
||||
def metadata(self, id: str) -> dict:
|
||||
print(self.__class__.__name__ + "::" + sys._getframe().f_code.co_name)
|
||||
url = self.ENTRYPOINT + id + "/metadata/"
|
||||
token_check(self.session)
|
||||
response = self._get(url)
|
||||
self._raise_response_error(response)
|
||||
return response.json()
|
Reference in New Issue
Block a user