def __init__(self, audience, uri, get_token, expires_in=datetime.timedelta( seconds=constants.AUTH_EXPIRATION_SECS), expires_at=None, port=constants.DEFAULT_AMQPS_PORT, timeout=10, retry_policy=TokenRetryPolicy(), verify=None, token_type=b"jwt", http_proxy=None, transport_type=TransportType.Amqp, encoding='UTF-8'): # pylint: disable=no-member self._retry_policy = retry_policy self._encoding = encoding self.uri = uri parsed = compat.urlparse(uri) # pylint: disable=no-member self.cert_file = verify self.hostname = parsed.hostname.encode(self._encoding) is_coroutine(get_token) self.get_token = get_token self.audience = self._encode(audience) self.token_type = self._encode(token_type) self.token = None self.expires_at, self.expires_in = self._set_expiry( expires_at, expires_in) self.timeout = timeout self.retries = 0 self.sasl = _SASL() self.set_io(self.hostname, port, http_proxy, transport_type)
def __init__(self, audience, uri, get_token, expires_in=datetime.timedelta(seconds=constants.AUTH_EXPIRATION_SECS), expires_at=None, port=None, timeout=10, retry_policy=TokenRetryPolicy(), verify=None, token_type=b"jwt", http_proxy=None, transport_type=TransportType.Amqp, encoding='UTF-8', **kwargs): # pylint: disable=no-member self._retry_policy = retry_policy self._encoding = encoding self.uri = uri parsed = compat.urlparse(uri) # pylint: disable=no-member self.cert_file = verify self.hostname = (kwargs.get("custom_endpoint_hostname") or parsed.hostname).encode(self._encoding) if not get_token or not callable(get_token): raise ValueError("get_token must be a callable object.") self.get_token = get_token self.audience = self._encode(audience) self.token_type = self._encode(token_type) self.token = None self.expires_at, self.expires_in = self._set_expiry(expires_at, expires_in) self.timeout = timeout self.retries = 0 self.sasl = _SASL() self.set_io(self.hostname, port, http_proxy, transport_type)
def __init__(self, audience, uri, token, expires_in=None, expires_at=None, username=None, password=None, port=None, timeout=10, retry_policy=TokenRetryPolicy(), verify=None, token_type=b"servicebus.windows.net:sastoken", http_proxy=None, transport_type=TransportType.Amqp, encoding='UTF-8', **kwargs): # pylint: disable=no-member self._retry_policy = retry_policy self._encoding = encoding self.uri = uri parsed = compat.urlparse(uri) # pylint: disable=no-member self.cert_file = verify self.hostname = (kwargs.get("custom_endpoint_hostname") or parsed.hostname).encode(self._encoding) self.username = compat.unquote_plus(parsed.username) if parsed.username else None # pylint: disable=no-member self.password = compat.unquote_plus(parsed.password) if parsed.password else None # pylint: disable=no-member self.username = username or self.username self.password = password or self.password self.audience = self._encode(audience) self.token_type = self._encode(token_type) self.token = self._encode(token) self.expires_at, self.expires_in = self._set_expiry(expires_at, expires_in) self.timeout = timeout self.retries = 0 self.sasl = _SASL() self.set_io(self.hostname, port, http_proxy, transport_type)
def _validate_address(self, address): """Confirm that supplied address is a valid URL and has an `amqp` or `amqps` scheme. :param address: The endpiont URL. :type address: str :rtype: ~urllib.parse.ParseResult """ parsed = compat.urlparse(address) if not parsed.path: raise ValueError("Invalid {} address: {}".format( self.__class__.__name__, parsed)) return parsed
def __init__(self, audience, uri, token, expires_in=None, expires_at=None, username=None, password=None, port=constants.DEFAULT_AMQPS_PORT, timeout=10, retry_policy=TokenRetryPolicy(), verify=None, token_type=b"servicebus.windows.net:sastoken", http_proxy=None, encoding='UTF-8'): # pylint: disable=no-member self._retry_policy = retry_policy self._encoding = encoding self.uri = uri parsed = compat.urlparse(uri) # pylint: disable=no-member self.cert_file = verify self.hostname = parsed.hostname.encode(self._encoding) self.username = compat.unquote_plus( parsed.username) if parsed.username else None # pylint: disable=no-member self.password = compat.unquote_plus( parsed.password) if parsed.password else None # pylint: disable=no-member self.username = username or self.username self.password = password or self.password self.audience = self._encode(audience) self.token_type = self._encode(token_type) self.token = self._encode(token) if not expires_at and not expires_in: raise ValueError( "Must specify either 'expires_at' or 'expires_in'.") elif not expires_at: self.expires_in = expires_in self.expires_at = time.time() + expires_in.seconds else: self.expires_at = expires_at expires_in = expires_at - time.time() if expires_in < 1: raise ValueError("Token has already expired.") self.expires_in = datetime.timedelta(seconds=expires_in) self.timeout = timeout self.retries = 0 self.sasl = _SASL() self.set_tlsio(self.hostname, port, http_proxy)