diff --git a/justfile b/justfile index 2627d12e6..0cc7222f5 100644 --- a/justfile +++ b/justfile @@ -39,6 +39,17 @@ repl: #!/usr/bin/env bash uv run --with ptpython ptpython -i <(cat << EOF from blueapi.client import BlueapiClient + from blueapi.client.rest import ServiceUnavailableError bc = BlueapiClient.from_config_file("tests/system_tests/config.yaml").with_instrument_session("cm12345-1") + try: + bc.login() + except KeyboardInterrupt: + print("Login cancelled") + except ServiceUnavailableError: + print("Couldn't access blueapi server to log in") + except Exception as e: + import traceback + print("Couldn't log in") + traceback.print_exception(e, chain=False) EOF ) diff --git a/src/blueapi/client/client.py b/src/blueapi/client/client.py index 20de15892..ce5ec3001 100644 --- a/src/blueapi/client/client.py +++ b/src/blueapi/client/client.py @@ -771,6 +771,7 @@ def login(self, token_path: Path | None = None): oidc, cache_manager=SessionCacheManager(token_path) ) auth.start_device_flow() + self._rest.session_manager = auth else: print("Server is not configured to use authentication!") diff --git a/src/blueapi/client/rest.py b/src/blueapi/client/rest.py index 0bddb5c87..980825708 100644 --- a/src/blueapi/client/rest.py +++ b/src/blueapi/client/rest.py @@ -186,7 +186,7 @@ def _response_json(response: requests.Response) -> Any: class BlueapiRestClient: _config: RestConfig - _session_manager: SessionManager | None + session_manager: SessionManager | None _pool: requests.Session def __init__( @@ -195,7 +195,7 @@ def __init__( session_manager: SessionManager | None = None, ) -> None: self._config = config or RestConfig() - self._session_manager = session_manager + self.session_manager = session_manager self._pool = requests.Session() def get_plans(self) -> PlanResponse: @@ -315,7 +315,7 @@ def _request_and_deserialize( json=data, params=params, headers=carr, - auth=JWTAuth(self._session_manager), + auth=JWTAuth(self.session_manager), ) except requests.exceptions.ConnectionError as ce: raise ServiceUnavailableError() from ce