From: Kenneth Reitz Date: Mon, 17 Dec 2012 12:21:10 +0000 (-0500) Subject: proxy manager X-Git-Tag: v1.0.0~14 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a982b0d90346febf9c0b4df042fc80fc18cc93dd;p=services%2Fpython-requests.git proxy manager --- diff --git a/requests/adapters.py b/requests/adapters.py index ffdf6c9..8768e73 100644 --- a/requests/adapters.py +++ b/requests/adapters.py @@ -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) diff --git a/requests/sessions.py b/requests/sessions.py index 8c4a491..620355d 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -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)