diff --git a/src/flareio/api_client.py b/src/flareio/api_client.py index de108e0..869bc90 100644 --- a/src/flareio/api_client.py +++ b/src/flareio/api_client.py @@ -37,6 +37,7 @@ def __init__( tenant_id: t.Optional[int] = None, session: t.Optional[requests.Session] = None, api_domain: t.Optional[str] = None, + proxies: t.Optional[t.Dict[str, str]] = None, _auth: AuthBase | None = None, _enable_beta_features: bool = False, ) -> None: @@ -59,6 +60,8 @@ def __init__( self._api_token: t.Optional[str] = None self._api_token_exp: t.Optional[datetime] = None self._session = session or self._create_session() + if proxies is not None: + self._session.proxies.update(proxies) @classmethod def from_env(cls) -> "FlareApiClient": diff --git a/tests/test_api_client_creation.py b/tests/test_api_client_creation.py index 2717fc8..0a567d0 100644 --- a/tests/test_api_client_creation.py +++ b/tests/test_api_client_creation.py @@ -1,6 +1,7 @@ from datetime import datetime import pytest +import requests import requests_mock from packaging.version import Version @@ -86,3 +87,31 @@ def test_backoff_max() -> None: retry = FlareApiClient._create_retry() assert hasattr(retry, "backoff_max") assert retry.backoff_max == 15 + + +def test_proxies_applied_to_session() -> None: + client = FlareApiClient( + api_key="test", + proxies={"https": "http://proxy.corp.local:8080"}, + ) + assert client._session.proxies["https"] == "http://proxy.corp.local:8080" + + +def test_proxies_default_no_proxy() -> None: + client = FlareApiClient(api_key="test") + assert client._session.proxies == {} + + +def test_proxies_merge_with_user_session() -> None: + session = requests.Session() + session.proxies["http"] = "http://existing-proxy:3128" + + client = FlareApiClient( + api_key="test", + session=session, + proxies={"https": "http://new-proxy:8080"}, + ) + + assert client._session is session + assert client._session.proxies["http"] == "http://existing-proxy:3128" + assert client._session.proxies["https"] == "http://new-proxy:8080"