Updated Requests api to accept a 'cert' argument.

This argument can be either a string, containing the path to a
pem-formatted key and certificate chain, or a tuple of (cert, key).

When supplied a tuple, the values are paths to an SSL certificate
chain file and key, respectively.
This commit is contained in:
chadnickbok@gmail.com
2012-03-14 17:15:29 -07:00
parent 82e69de44f
commit fc618aa78a
3 changed files with 17 additions and 19 deletions
+1 -2
View File
@@ -33,8 +33,7 @@ def request(method, url, **kwargs):
:param config: (optional) A configuration dictionary.
:param verify: (optional) if ``True``, the SSL cert will be verified. A CA_BUNDLE path can also be provided.
:param prefetch: (optional) if ``True``, the response content will be immediately downloaded.
:param key_file: (optional) ssl client key file.
:param cert_file: (optional) ssl client cert file.
:param cert: (optional) if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair.
"""
s = kwargs.pop('session') if 'session' in kwargs else sessions.session()
+10 -8
View File
@@ -64,8 +64,7 @@ class Request(object):
_poolmanager=None,
verify=None,
session=None,
key_file=None,
cert_file=None):
cert=None):
#: Dictionary of configurations for this request.
self.config = dict(config or [])
@@ -146,8 +145,7 @@ class Request(object):
self.verify = verify
#: SSL Certificate
self.key_file = key_file
self.cert_file = cert_file
self.cert = cert
if headers:
headers = CaseInsensitiveDict(self.headers)
@@ -273,7 +271,8 @@ class Request(object):
_poolmanager=self._poolmanager,
proxies=self.proxies,
verify=self.verify,
session=self.session
session=self.session,
cert=self.cert
)
request.send()
@@ -513,9 +512,12 @@ class Request(object):
conn.cert_reqs = 'CERT_NONE'
conn.ca_certs = None
if self.key_file and self.cert_file:
conn.key_file = self.key_file
conn.cert_file = self.cert_file
if self.cert:
if type(self.cert) is tuple:
conn.cert_file = self.cert[0]
conn.key_file = self.cert[1]
else:
conn.cert_file = self.cert
if not self.sent or anyway:
+6 -9
View File
@@ -64,7 +64,7 @@ class Session(object):
__attrs__ = [
'headers', 'cookies', 'auth', 'timeout', 'proxies', 'hooks',
'params', 'config', 'verify']
'params', 'config', 'verify', 'cert']
def __init__(self,
@@ -78,8 +78,7 @@ class Session(object):
config=None,
prefetch=False,
verify=True,
key_file=None,
cert_file=None):
cert=None):
self.headers = headers or {}
self.cookies = cookies or {}
@@ -91,8 +90,7 @@ class Session(object):
self.config = config or {}
self.prefetch = prefetch
self.verify = verify
self.key_file = key_file
self.cert_file = cert_file
self.cert = cert
for (k, v) in list(defaults.items()):
self.config.setdefault(k, v)
@@ -136,8 +134,7 @@ class Session(object):
config=None,
prefetch=False,
verify=None,
key_file=None,
cert_file=None):
cert=None):
"""Constructs and sends a :class:`Request <Request>`.
Returns :class:`Response <Response>` object.
@@ -157,6 +154,7 @@ class Session(object):
:param config: (optional) A configuration dictionary.
:param prefetch: (optional) if ``True``, the response content will be immediately downloaded.
:param verify: (optional) if ``True``, the SSL cert will be verified. A CA_BUNDLE path can also be provided.
:param cert: (optional) if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair.
"""
method = str(method).upper()
@@ -194,8 +192,7 @@ class Session(object):
proxies=proxies,
config=config,
verify=verify,
key_file=key_file,
cert_file=cert_file,
cert=cert,
_poolmanager=self.poolmanager
)