Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/requests_toolbelt/auth/handler.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author | shellac |
---|---|
date | Mon, 01 Jun 2020 08:59:25 -0400 |
parents | 79f47841a781 |
children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/requests_toolbelt/auth/handler.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,142 +0,0 @@ -# -*- coding: utf-8 -*- -""" - -requests_toolbelt.auth.handler -============================== - -This holds all of the implementation details of the Authentication Handler. - -""" - -from requests.auth import AuthBase, HTTPBasicAuth -from requests.compat import urlparse, urlunparse - - -class AuthHandler(AuthBase): - - """ - - The ``AuthHandler`` object takes a dictionary of domains paired with - authentication strategies and will use this to determine which credentials - to use when making a request. For example, you could do the following: - - .. code-block:: python - - from requests import HTTPDigestAuth - from requests_toolbelt.auth.handler import AuthHandler - - import requests - - auth = AuthHandler({ - 'https://api.github.com': ('sigmavirus24', 'fakepassword'), - 'https://example.com': HTTPDigestAuth('username', 'password') - }) - - r = requests.get('https://api.github.com/user', auth=auth) - # => <Response [200]> - r = requests.get('https://example.com/some/path', auth=auth) - # => <Response [200]> - - s = requests.Session() - s.auth = auth - r = s.get('https://api.github.com/user') - # => <Response [200]> - - .. warning:: - - :class:`requests.auth.HTTPDigestAuth` is not yet thread-safe. If you - use :class:`AuthHandler` across multiple threads you should - instantiate a new AuthHandler for each thread with a new - HTTPDigestAuth instance for each thread. - - """ - - def __init__(self, strategies): - self.strategies = dict(strategies) - self._make_uniform() - - def __call__(self, request): - auth = self.get_strategy_for(request.url) - return auth(request) - - def __repr__(self): - return '<AuthHandler({0!r})>'.format(self.strategies) - - def _make_uniform(self): - existing_strategies = list(self.strategies.items()) - self.strategies = {} - - for (k, v) in existing_strategies: - self.add_strategy(k, v) - - @staticmethod - def _key_from_url(url): - parsed = urlparse(url) - return urlunparse((parsed.scheme.lower(), - parsed.netloc.lower(), - '', '', '', '')) - - def add_strategy(self, domain, strategy): - """Add a new domain and authentication strategy. - - :param str domain: The domain you wish to match against. For example: - ``'https://api.github.com'`` - :param str strategy: The authentication strategy you wish to use for - that domain. For example: ``('username', 'password')`` or - ``requests.HTTPDigestAuth('username', 'password')`` - - .. code-block:: python - - a = AuthHandler({}) - a.add_strategy('https://api.github.com', ('username', 'password')) - - """ - # Turn tuples into Basic Authentication objects - if isinstance(strategy, tuple): - strategy = HTTPBasicAuth(*strategy) - - key = self._key_from_url(domain) - self.strategies[key] = strategy - - def get_strategy_for(self, url): - """Retrieve the authentication strategy for a specified URL. - - :param str url: The full URL you will be making a request against. For - example, ``'https://api.github.com/user'`` - :returns: Callable that adds authentication to a request. - - .. code-block:: python - - import requests - a = AuthHandler({'example.com', ('foo', 'bar')}) - strategy = a.get_strategy_for('http://example.com/example') - assert isinstance(strategy, requests.auth.HTTPBasicAuth) - - """ - key = self._key_from_url(url) - return self.strategies.get(key, NullAuthStrategy()) - - def remove_strategy(self, domain): - """Remove the domain and strategy from the collection of strategies. - - :param str domain: The domain you wish remove. For example, - ``'https://api.github.com'``. - - .. code-block:: python - - a = AuthHandler({'example.com', ('foo', 'bar')}) - a.remove_strategy('example.com') - assert a.strategies == {} - - """ - key = self._key_from_url(domain) - if key in self.strategies: - del self.strategies[key] - - -class NullAuthStrategy(AuthBase): - def __repr__(self): - return '<NullAuthStrategy>' - - def __call__(self, r): - return r