proxy manager
authorKenneth Reitz <me@kennethreitz.com>
Mon, 17 Dec 2012 12:21:10 +0000 (07:21 -0500)
committerKenneth Reitz <me@kennethreitz.com>
Mon, 17 Dec 2012 12:21:10 +0000 (07:21 -0500)
requests/adapters.py
requests/sessions.py

index ffdf6c96ea57dd3d7bf4c634e2656881248eb3f9..8768e73a4ae0dca037caea695370a80160286291 100644 (file)
@@ -127,7 +127,7 @@ class HTTPAdapter(BaseAdapter):
         proxy = proxies.get(urlparse(url).scheme)
 
         if proxy:
-            conn = poolmanager.proxy_from_url(proxy)
+            conn = self.poolmanager.ProxyManager(self.poolmanager.proxy_from_url(proxy))
         else:
             conn = self.poolmanager.connection_from_url(url)
 
index 8c4a491de4f5581902a6e3471e843d39b4bb4797..620355d6289985f25f9c7169673ab62fddbab966 100644 (file)
@@ -19,7 +19,7 @@ from .exceptions import TooManyRedirects, InvalidSchema
 from .compat import urlparse, urljoin
 from .adapters import HTTPAdapter
 
-from .utils import requote_uri
+from .utils import requote_uri, get_environ_proxies, get_netrc_auth
 
 from .status_codes import codes
 REDIRECT_STATI = (codes.moved, codes.found, codes.other, codes.temporary_moved)
@@ -204,6 +204,7 @@ class Session(SessionRedirectMixin):
         cert=None):
 
         cookies = cookies or {}
+        proxies = proxies or {}
 
         # Bootstrap CookieJar.
         if not isinstance(cookies, cookielib.CookieJar):
@@ -213,6 +214,17 @@ class Session(SessionRedirectMixin):
         for cookie in self.cookies:
             cookies.set_cookie(cookie)
 
+        # Gather clues from the surrounding environment.
+        if self.trust_env:
+            # Set environment's proxies.
+            env_proxies = get_environ_proxies(url) or {}
+            for (k, v) in env_proxies.items():
+                proxies.setdefault(k, v)
+
+            # Set environment's basic authentication.
+            if not auth:
+                auth = get_netrc_auth(url)
+
         # Merge all the kwargs.
         params = merge_kwargs(params, self.params)
         headers = merge_kwargs(headers, self.headers)
@@ -223,6 +235,7 @@ class Session(SessionRedirectMixin):
         verify = merge_kwargs(verify, self.verify)
         cert = merge_kwargs(cert, self.cert)
 
+
         # Create the Request.
         req = Request()
         req.method = method
@@ -239,7 +252,7 @@ class Session(SessionRedirectMixin):
         prep = req.prepare()
 
         # Send the request.
-        resp = self.send(prep, stream=stream, timeout=timeout, verify=verify, cert=cert)
+        resp = self.send(prep, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies)
 
         # Redirect resolving generator.
         gen = self.resolve_redirects(resp, req, stream, timeout, verify, cert)