more advanced authentication mechanism

This commit is contained in:
Kenneth Reitz
2011-10-23 11:33:03 -04:00
parent 495c3d5006
commit 4892a305d9
+29 -1
View File
@@ -28,4 +28,32 @@ def http_digest(r, username, password):
Arguments should be considered non-positional.
"""
r.headers
r.headers
def dispatch(t):
"""Given an auth tuple, return an expanded version."""
if not t:
return t
else:
t = list(t)
# Make sure they're passing in something.
assert len(t) <= 2
# If only two items are passed in, assume HTTPBasic.
if (len(t) == 2):
t.insert(0, 'basic')
# Allow built-in string referenced auths.
if isinstance(t[0], basestring):
if t[0] in ('basic', 'forced_basic'):
t[0] = http_basic
elif t[0] in ('digest',):
t[0] = http_digest
# Return a custom callable.
return (t[0], t[1:])