diff --git a/requests/auth.py b/requests/auth.py index 3a978b13..6825441c 100644 --- a/requests/auth.py +++ b/requests/auth.py @@ -28,4 +28,32 @@ def http_digest(r, username, password): Arguments should be considered non-positional. """ - r.headers \ No newline at end of file + 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:]) + +