@@ -44,6 +44,7 @@ class ArmisClient: # pylint: disable=too-few-public-methods
4444 1. Authenticating requests.
4545 2. Retrying of failed requests (when applicable).
4646 3. Pagination of requests (when applicable).
47+ 4. Proxy configuration via HTTPS_PROXY and HTTP_PROXY environment variables.
4748 """
4849
4950 def __init__ (
@@ -91,14 +92,22 @@ def client(self, retries: Optional[int] = None, backoff: Optional[float] = None)
9192 retries = retries if retries is not None else self ._default_retries
9293 backoff = backoff if backoff is not None else self ._default_backoff
9394 retry = Retry (total = retries , backoff_factor = backoff )
95+
96+ if proxy := self ._get_proxy_config ():
97+ http_transport = httpx .AsyncHTTPTransport (proxy = proxy )
98+ transport = RetryTransport (retry = retry , transport = http_transport )
99+ else :
100+ transport = RetryTransport (retry = retry )
101+
94102 return httpx .AsyncClient (
95103 auth = self ._auth ,
96104 base_url = self ._base_url ,
97105 headers = {
98106 "User-Agent" : self ._user_agent ,
99107 "Armis-API-Client-Id" : self ._client_id ,
100108 },
101- transport = RetryTransport (retry = retry ),
109+ transport = transport ,
110+ trust_env = True ,
102111 )
103112
104113 async def list (self , url : str , key : str ) -> AsyncIterator [dict ]:
@@ -142,3 +151,7 @@ async def main():
142151 for item in items :
143152 yield item
144153 from_ = data .get ("next" )
154+
155+ def _get_proxy_config (self ):
156+ """Get proxy configuration from environment variables."""
157+ return os .getenv ("HTTPS_PROXY" ) or os .getenv ("HTTP_PROXY" )
0 commit comments