refactoring

This commit is contained in:
Florian Förster 2025-03-07 08:19:06 +01:00
parent 3a62573ae1
commit a94fd4a936
3 changed files with 50 additions and 44 deletions

View File

@ -1,6 +1,6 @@
from typing import Final
from delta_barth.api.common import Session
from delta_barth.api._session import Session
from delta_barth.constants import HTTP_BASE_CONTENT_HEADERS
from delta_barth.errors import StateHandler

View File

@ -0,0 +1,48 @@
from __future__ import annotations
import warnings
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from delta_barth.types import HttpContentHeaders
class Session:
def __init__(
self,
base_headers: HttpContentHeaders,
) -> None:
self._headers = base_headers
self._session_token: str | None = None
self._logged_in: bool = False
@property
def headers(self) -> HttpContentHeaders:
return self._headers
@property
def session_token(self) -> str | None:
return self._session_token
@property
def logged_in(self) -> bool:
return self._logged_in
def add_session_token(
self,
token: str,
) -> None:
if self.session_token is not None:
warnings.warn(
"Setting new API session token despite it was already set. "
"Overwriting existing token."
)
self._session_token = token
self._headers.update(DelecoToken=token)
self._logged_in = True
def remove_session_token(self) -> None:
if "DelecoToken" in self.headers:
del self._headers["DelecoToken"]
self._session_token = None
self._logged_in = False

View File

@ -1,7 +1,6 @@
from __future__ import annotations
import re
import warnings
from datetime import datetime as Datetime
from typing import TYPE_CHECKING, Final
@ -14,7 +13,7 @@ from delta_barth.errors import (
ApiConnectionError,
UnspecifiedRequestType,
)
from delta_barth.types import DelBarApiError, HttpContentHeaders, HttpRequestTypes
from delta_barth.types import DelBarApiError, HttpRequestTypes
if TYPE_CHECKING:
from delta_barth.types import Status
@ -22,47 +21,6 @@ if TYPE_CHECKING:
LOGIN_ERROR_CODES_KNOWN: Final[frozenset[int]] = frozenset((400, 401, 409, 500))
class Session:
def __init__(
self,
base_headers: HttpContentHeaders,
) -> None:
self._headers = base_headers
self._session_token: str | None = None
self._logged_in: bool = False
@property
def headers(self) -> HttpContentHeaders:
return self._headers
@property
def session_token(self) -> str | None:
return self._session_token
@property
def logged_in(self) -> bool:
return self._logged_in
def add_session_token(
self,
token: str,
) -> None:
if self.session_token is not None:
warnings.warn(
"Setting new API session token despite it was already set. "
"Overwriting existing token."
)
self._session_token = token
self._headers.update(DelecoToken=token)
self._logged_in = True
def remove_session_token(self) -> None:
if "DelecoToken" in self.headers:
del self._headers["DelecoToken"]
self._session_token = None
self._logged_in = False
def _assert_login_status() -> None:
if not CURRENT_SESSION.logged_in:
raise ApiConnectionError("Curent session is not logged in")