diff --git a/requests/api.py b/requests/api.py index b079eedd..3c79646b 100644 --- a/requests/api.py +++ b/requests/api.py @@ -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() diff --git a/requests/models.py b/requests/models.py index 753e83ab..d827042b 100644 --- a/requests/models.py +++ b/requests/models.py @@ -63,7 +63,9 @@ class Request(object): 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 []) @@ -143,6 +145,10 @@ class Request(object): #: SSL Verification. self.verify = verify + #: SSL Certificate + self.key_file = key_file + self.cert_file = cert_file + if headers: headers = CaseInsensitiveDict(self.headers) else: @@ -507,6 +513,10 @@ 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 not self.sent or anyway: if self.cookies: diff --git a/requests/sessions.py b/requests/sessions.py index 04d7d5dd..90fbacf0 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -77,7 +77,9 @@ class Session(object): params=None, config=None, prefetch=False, - verify=True): + verify=True, + key_file=None, + cert_file=None): self.headers = headers or {} self.cookies = cookies or {} @@ -89,6 +91,8 @@ class Session(object): 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) @@ -131,7 +135,9 @@ class Session(object): return_response=True, config=None, prefetch=False, - verify=None): + verify=None, + key_file=None, + cert_file=None): """Constructs and sends a :class:`Request `. Returns :class:`Response ` object. @@ -188,6 +194,8 @@ class Session(object): proxies=proxies, config=config, verify=verify, + key_file=key_file, + cert_file=cert_file, _poolmanager=self.poolmanager )