From 3d2a23814d59a8126c86464d9aeb9fb2274e47eb Mon Sep 17 00:00:00 2001 From: Kevin Chiu Date: Sat, 29 Nov 2025 21:56:07 -0800 Subject: [PATCH] Add HTTP proxy support via environment variables When HTTPS_PROXY, https_proxy, HTTP_PROXY, or http_proxy environment variables are set, use urllib3.ProxyManager instead of PoolManager. This enables the client to work in environments that require proxy configuration, such as corporate networks, CI/CD pipelines, and sandboxed development environments. The behavior is backward compatible - when no proxy environment variables are set, PoolManager is used as before. --- massive/rest/base.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/massive/rest/base.py b/massive/rest/base.py index 3349d7ef..5effa6c2 100644 --- a/massive/rest/base.py +++ b/massive/rest/base.py @@ -1,5 +1,6 @@ import certifi import json +import os import urllib3 import inspect from urllib3.util.retry import Retry @@ -73,7 +74,7 @@ def __init__( # https://urllib3.readthedocs.io/en/stable/reference/urllib3.poolmanager.html # https://urllib3.readthedocs.io/en/stable/reference/urllib3.connectionpool.html#urllib3.HTTPConnectionPool - self.client = urllib3.PoolManager( + pool_kwargs = dict( num_pools=num_pools, headers=self.headers, # default headers sent with each request. ca_certs=certifi.where(), @@ -82,6 +83,14 @@ def __init__( timeout=self.timeout, # set timeout for each request ) + # Check for proxy environment variables (HTTPS_PROXY or HTTP_PROXY) + proxy_url = os.environ.get("HTTPS_PROXY") or os.environ.get("https_proxy") \ + or os.environ.get("HTTP_PROXY") or os.environ.get("http_proxy") + if proxy_url: + self.client = urllib3.ProxyManager(proxy_url, **pool_kwargs) + else: + self.client = urllib3.PoolManager(**pool_kwargs) + if verbose: logger.setLevel(logging.DEBUG) self.trace = trace