import requests from mdrsclient.cache import CacheFile from mdrsclient.exceptions import MissingConfigurationException from mdrsclient.models import Laboratories, Token, User class MDRSSession(requests.Session): url: str __cache: CacheFile def __init__(self, remote: str, url: str) -> None: super().__init__() self.url = url self.__cache = CacheFile(remote) self.__prepare_headers() def build_url(self, *args) -> str: if self.url == "": raise MissingConfigurationException("remote host is not configured") parts = [self.url] parts.extend(args) return "/".join(parts) def logout(self) -> None: del self.__cache.user del self.__cache.token self.headers.update({"Authorization": ""}) @property def user(self) -> User | None: return self.__cache.user @user.setter def user(self, user: User) -> None: self.__cache.user = user @property def token(self) -> Token | None: return self.__cache.token @token.setter def token(self, token: Token) -> None: self.__cache.token = token self.__prepare_headers() @property def laboratories(self) -> Laboratories: return self.__cache.laboratories @laboratories.setter def laboratories(self, laboratories: Laboratories) -> None: self.__cache.laboratories = laboratories def __prepare_headers(self) -> None: self.headers.update({"accept": "application/json"}) if self.token is not None: self.headers.update({"Authorization": f"Bearer {self.token.access}"})