_digest_auth_compat.py 910 B

1234567891011121314151617181920212223242526272829
  1. """Provide a compatibility layer for requests.auth.HTTPDigestAuth."""
  2. import requests
  3. class _ThreadingDescriptor(object):
  4. def __init__(self, prop, default):
  5. self.prop = prop
  6. self.default = default
  7. def __get__(self, obj, objtype=None):
  8. return getattr(obj._thread_local, self.prop, self.default)
  9. def __set__(self, obj, value):
  10. setattr(obj._thread_local, self.prop, value)
  11. class _HTTPDigestAuth(requests.auth.HTTPDigestAuth):
  12. init = _ThreadingDescriptor('init', True)
  13. last_nonce = _ThreadingDescriptor('last_nonce', '')
  14. nonce_count = _ThreadingDescriptor('nonce_count', 0)
  15. chal = _ThreadingDescriptor('chal', {})
  16. pos = _ThreadingDescriptor('pos', None)
  17. num_401_calls = _ThreadingDescriptor('num_401_calls', 1)
  18. if requests.__build__ < 0x020800:
  19. HTTPDigestAuth = requests.auth.HTTPDigestAuth
  20. else:
  21. HTTPDigestAuth = _HTTPDigestAuth