mdrs-client-python/mdrsclient/session.py
2023-05-01 20:00:32 +09:00

59 lines
1.6 KiB
Python

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}"})