Skip to content

Commit

Permalink
Exposed key_file and cert_file in requests, to support https client c…
Browse files Browse the repository at this point in the history
…ertificates.
  • Loading branch information
[email protected] committed Mar 14, 2012
1 parent cc4381b commit 82e69de
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 3 deletions.
2 changes: 2 additions & 0 deletions requests/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ 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.
"""

s = kwargs.pop('session') if 'session' in kwargs else sessions.session()
Expand Down
12 changes: 11 additions & 1 deletion requests/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,9 @@ def __init__(self,
config=None,
_poolmanager=None,
verify=None,
session=None):
session=None,
key_file=None,
cert_file=None):

#: Dictionary of configurations for this request.
self.config = dict(config or [])
Expand Down Expand Up @@ -143,6 +145,10 @@ def __init__(self,
#: SSL Verification.
self.verify = verify

#: SSL Certificate
self.key_file = key_file
self.cert_file = cert_file

if headers:
headers = CaseInsensitiveDict(self.headers)
else:
Expand Down Expand Up @@ -507,6 +513,10 @@ def send(self, anyway=False, prefetch=False):
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 not self.sent or anyway:

if self.cookies:
Expand Down
12 changes: 10 additions & 2 deletions requests/sessions.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,9 @@ def __init__(self,
params=None,
config=None,
prefetch=False,
verify=True):
verify=True,
key_file=None,
cert_file=None):

self.headers = headers or {}
self.cookies = cookies or {}
Expand All @@ -89,6 +91,8 @@ def __init__(self,
self.config = config or {}
self.prefetch = prefetch
self.verify = verify
self.key_file = key_file
self.cert_file = cert_file

for (k, v) in list(defaults.items()):
self.config.setdefault(k, v)
Expand Down Expand Up @@ -131,7 +135,9 @@ def request(self, method, url,
return_response=True,
config=None,
prefetch=False,
verify=None):
verify=None,
key_file=None,
cert_file=None):

"""Constructs and sends a :class:`Request <Request>`.
Returns :class:`Response <Response>` object.
Expand Down Expand Up @@ -188,6 +194,8 @@ def request(self, method, url,
proxies=proxies,
config=config,
verify=verify,
key_file=key_file,
cert_file=cert_file,
_poolmanager=self.poolmanager
)

Expand Down

0 comments on commit 82e69de

Please sign in to comment.