]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
digest authentication 700/head
authoricaromedeiros <icaro.medeiros@gmail.com>
Fri, 22 Mar 2013 14:24:49 +0000 (11:24 -0300)
committericaromedeiros <icaro.medeiros@gmail.com>
Fri, 22 Mar 2013 14:24:49 +0000 (11:24 -0300)
tornado/curl_httpclient.py
tornado/httpclient.py

index c5f08df4f1427e80cfa14e5281a78f36cca9e0ca..f46992bf372a3a3f97c035176b6a2558d2f07aeb 100644 (file)
@@ -411,7 +411,12 @@ def _curl_setup_request(curl, request, buffer, headers):
 
     if request.auth_username is not None:
         userpwd = "%s:%s" % (request.auth_username, request.auth_password or '')
-        curl.setopt(pycurl.HTTPAUTH, pycurl.HTTPAUTH_BASIC)
+
+        if request.auth_mode is None or request.auth_mode == "basic":
+            curl.setopt(pycurl.HTTPAUTH, pycurl.HTTPAUTH_BASIC)
+        elif request.auth_mode == "digest":
+            curl.setopt(pycurl.HTTPAUTH, pycurl.HTTPAUTH_DIGEST)
+
         curl.setopt(pycurl.USERPWD, native_str(userpwd))
         gen_log.debug("%s %s (username: %r)", request.method, request.url,
                       request.auth_username)
index 2a6f4467ba11542730ba89e5625e4fd42f6bc910..a69709e3361f95b4b69cd2157f3a180659fdc8c6 100644 (file)
@@ -242,7 +242,7 @@ class HTTPRequest(object):
         validate_cert=True)
 
     def __init__(self, url, method="GET", headers=None, body=None,
-                 auth_username=None, auth_password=None,
+                 auth_username=None, auth_password=None, auth_mode=None,
                  connect_timeout=None, request_timeout=None,
                  if_modified_since=None, follow_redirects=None,
                  max_redirects=None, user_agent=None, use_gzip=None,
@@ -259,8 +259,9 @@ class HTTPRequest(object):
         :arg string method: HTTP method, e.g. "GET" or "POST"
         :arg headers: Additional HTTP headers to pass on the request
         :type headers: `~tornado.httputil.HTTPHeaders` or `dict`
-        :arg string auth_username: Username for HTTP "Basic" authentication
-        :arg string auth_password: Password for HTTP "Basic" authentication
+        :arg string auth_username: Username for HTTP authentication
+        :arg string auth_password: Password for HTTP authentication
+        :arg string auth_mode: Authentication mode (basic, digest)
         :arg float connect_timeout: Timeout for initial connection in seconds
         :arg float request_timeout: Timeout for entire request in seconds
         :arg if_modified_since: Timestamp for ``If-Modified-Since`` header
@@ -322,6 +323,7 @@ class HTTPRequest(object):
         self.body = utf8(body)
         self.auth_username = auth_username
         self.auth_password = auth_password
+        self.auth_mode = auth_mode        
         self.connect_timeout = connect_timeout
         self.request_timeout = request_timeout
         self.follow_redirects = follow_redirects