From: Ian Cordasco Date: Sat, 23 Aug 2014 20:50:15 +0000 (-0500) Subject: Add Session method to merge environment settings with per-request settings X-Git-Tag: v2.4.0~5^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b4a7906bca61f94a5b7a0e177b0d85b3ee11604f;p=services%2Fpython-requests.git Add Session method to merge environment settings with per-request settings --- diff --git a/requests/sessions.py b/requests/sessions.py index 07b6a32..dafa956 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -435,36 +435,16 @@ class Session(SessionRedirectMixin): proxies = proxies or {} - # 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) - - # Look for configuration. - if verify is True or verify is None: - verify = os.environ.get('REQUESTS_CA_BUNDLE') - - # Curl compatibility. - if verify is True or verify is None: - verify = os.environ.get('CURL_CA_BUNDLE') - - # Merge all the kwargs. - proxies = merge_setting(proxies, self.proxies) - stream = merge_setting(stream, self.stream) - verify = merge_setting(verify, self.verify) - cert = merge_setting(cert, self.cert) + settings = self.merge_environment_settings( + prep.url, proxies, stream, verify, cert + ) # Send the request. send_kwargs = { - 'stream': stream, 'timeout': timeout, - 'verify': verify, - 'cert': cert, - 'proxies': proxies, 'allow_redirects': allow_redirects, } + send_kwargs.update(settings) resp = self.send(prep, **send_kwargs) return resp @@ -612,6 +592,32 @@ class Session(SessionRedirectMixin): return r + def merge_environment_settings(self, url, proxies, stream, verify, cert): + """Checks the environment and merges it with some settings.""" + # 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) + + # Look for configuration. + if verify is True or verify is None: + verify = os.environ.get('REQUESTS_CA_BUNDLE') + + # Curl compatibility. + if verify is True or verify is None: + verify = os.environ.get('CURL_CA_BUNDLE') + + # Merge all the kwargs. + proxies = merge_setting(proxies, self.proxies) + stream = merge_setting(stream, self.stream) + verify = merge_setting(verify, self.verify) + cert = merge_setting(cert, self.cert) + + return {'verify': verify, 'proxies': proxies, 'stream': stream, + 'cert': cert} + def get_adapter(self, url): """Returns the appropriate connnection adapter for the given URL.""" for (prefix, adapter) in self.adapters.items():