def __init__(self, uri, ssl_options=None, client_properties=None, lazy=False): """ :param str uri: AMQP Connection string :raises TypeError: Raises on invalid uri. :raises ValueError: Raises on invalid uri. :raises AttributeError: Raises on invalid uri. :raises AMQPConnectionError: Raises if the connection encountered an error. """ uri = compatibility.patch_uri(uri) parsed_uri = urlparse.urlparse(uri) use_ssl = parsed_uri.scheme == 'https' hostname = parsed_uri.hostname or 'localhost' port = parsed_uri.port or 5672 username = urlparse.unquote(parsed_uri.username or 'guest') password = urlparse.unquote(parsed_uri.password or 'guest') kwargs = self._parse_uri_options(parsed_uri, use_ssl, ssl_options) super(UriConnection, self).__init__(hostname, username, password, port, client_properties=client_properties, lazy=lazy, **kwargs)
def _parse_uri_options(self, parsed_uri, use_ssl=False, ssl_options=None): """Parse the uri options. :param parsed_uri: :param bool use_ssl: :return: """ ssl_options = ssl_options or {} kwargs = urlparse.parse_qs(parsed_uri.query) vhost = urlparse.unquote(parsed_uri.path[1:]) or DEFAULT_VIRTUAL_HOST options = { 'ssl': use_ssl, 'virtual_host': vhost, 'heartbeat': int(kwargs.pop('heartbeat', [DEFAULT_HEARTBEAT_INTERVAL])[0]), 'timeout': int(kwargs.pop('timeout', [DEFAULT_SOCKET_TIMEOUT])[0]) } if use_ssl: if not compatibility.SSL_SUPPORTED: raise AMQPConnectionError( 'Python not compiled with support ' 'for TLSv1 or higher' ) ssl_options.update(self._parse_ssl_options(kwargs)) options['ssl_options'] = ssl_options return options
def _parse_uri_options(self, parsed_uri, use_ssl=False, ssl_options=None): """Parse the uri options. :param parsed_uri: :param bool use_ssl: :return: """ ssl_options = ssl_options or {} kwargs = urlparse.parse_qs(parsed_uri.query) vhost = urlparse.unquote(parsed_uri.path[1:]) or DEFAULT_VIRTUAL_HOST options = { 'ssl': use_ssl, 'virtual_host': vhost, 'heartbeat': int(kwargs.pop('heartbeat', [DEFAULT_HEARTBEAT_INTERVAL])[0]), 'timeout': int(kwargs.pop('timeout', [DEFAULT_SOCKET_TIMEOUT])[0]) } if use_ssl: if not compatibility.SSL_SUPPORTED: raise AMQPConnectionError('Python not compiled with support ' 'for TLSv1 or higher') ssl_options.update(self._parse_ssl_options(kwargs)) options['ssl_options'] = ssl_options return options
def declare(self, queue='', virtual_host='/', passive=False, durable=False, auto_delete=False, arguments=None): """Declare a Queue. :param str queue: Queue name :param str virtual_host: Virtual host name :param bool passive: Do not create :param bool durable: Durable queue :param bool auto_delete: Automatically delete when not in use :param dict|None arguments: Queue key/value arguments :raises ApiError: Raises if the remote server encountered an error. :raises ApiConnectionError: Raises if there was a connectivity issue. :rtype: dict """ virtual_host = quote(virtual_host, '') if passive: return self.get(queue, virtual_host=virtual_host) queue_payload = json.dumps({ 'durable': durable, 'auto_delete': auto_delete, 'arguments': arguments or {}, 'vhost': urlparse.unquote(virtual_host) }) return self.http_client.put(API_QUEUE % (virtual_host, queue), payload=queue_payload)
def declare(self, queue='', virtual_host='/', passive=False, durable=False, auto_delete=False, arguments=None): """Declare a Queue. :param str queue: Queue name :param str virtual_host: Virtual host name :param bool passive: Do not create :param bool durable: Durable queue :param bool auto_delete: Automatically delete when not in use :param dict|None arguments: Queue key/value arguments :raises ApiError: Raises if the remote server encountered an error. :raises ApiConnectionError: Raises if there was a connectivity issue. :rtype: dict """ virtual_host = quote(virtual_host, '') if passive: return self.get(queue, virtual_host=virtual_host) queue_payload = json.dumps( { 'durable': durable, 'auto_delete': auto_delete, 'arguments': arguments or {}, 'vhost': urlparse.unquote(virtual_host) } ) return self.http_client.put( API_QUEUE % ( virtual_host, queue ), payload=queue_payload)
def __init__(self, uri, ssl_options=None, lazy=False): """ :param str uri: AMQP Connection string :raises TypeError: Raises on invalid uri. :raises ValueError: Raises on invalid uri. :raises AttributeError: Raises on invalid uri. :raises AMQPConnectionError: Raises if the connection encountered an error. """ uri = compatibility.patch_uri(uri) parsed_uri = urlparse.urlparse(uri) use_ssl = parsed_uri.scheme == 'https' hostname = parsed_uri.hostname or 'localhost' port = parsed_uri.port or 5672 username = urlparse.unquote(parsed_uri.username or 'guest') password = urlparse.unquote(parsed_uri.password or 'guest') kwargs = self._parse_uri_options(parsed_uri, use_ssl, ssl_options) super(UriConnection, self).__init__(hostname, username, password, port, lazy=lazy, **kwargs)
def _parse_uri_options(self, parsed_uri, use_ssl): """Parse the uri options. :param parsed_uri: :param bool use_ssl: :return: """ kwargs = urlparse.parse_qs(parsed_uri.query) options = { 'ssl': use_ssl, 'virtual_host': urlparse.unquote(parsed_uri.path[1:]) or '/', 'heartbeat': int(kwargs.pop('heartbeat', [60])[0]), 'timeout': int(kwargs.pop('timeout', [30])[0]) } if use_ssl: if not compatibility.SSL_SUPPORTED: raise AMQPConnectionError('Python not compiled with support ' 'for TLSv1 or higher') options['ssl_options'] = self._parse_ssl_options(kwargs) return options
def _parse_uri_options(self, parsed_uri, use_ssl): """Parse the uri options. :param parsed_uri: :param bool use_ssl: :return: """ kwargs = urlparse.parse_qs(parsed_uri.query) options = { 'ssl': use_ssl, 'virtual_host': urlparse.unquote(parsed_uri.path[1:]) or '/', 'heartbeat': int(kwargs.pop('heartbeat', [60])[0]), 'timeout': int(kwargs.pop('timeout', [30])[0]) } if use_ssl: if not compatibility.SSL_SUPPORTED: raise AMQPConnectionError( 'Python not compiled with support ' 'for TLSv1 or higher' ) options['ssl_options'] = self._parse_ssl_options(kwargs) return options
def declare(self, exchange='', exchange_type='direct', virtual_host='/', passive=False, durable=False, auto_delete=False, internal=False, arguments=None): """Declare an Exchange. :param str exchange: Exchange name :param str exchange_type: Exchange type :param str virtual_host: Virtual host name :param bool passive: Do not create :param bool durable: Durable exchange :param bool auto_delete: Automatically delete when not in use :param bool internal: Is the exchange for use by the broker only. :param dict|None arguments: Exchange key/value arguments :raises ApiError: Raises if the remote server encountered an error. :raises ApiConnectionError: Raises if there was a connectivity issue. :rtype: None """ virtual_host = quote(virtual_host, '') if passive: return self.get(exchange, virtual_host=virtual_host) exchange_payload = json.dumps({ 'durable': durable, 'auto_delete': auto_delete, 'internal': internal, 'type': exchange_type, 'arguments': arguments or {}, 'vhost': urlparse.unquote(virtual_host) }) return self.http_client.put(API_EXCHANGE % (virtual_host, exchange), payload=exchange_payload)
def declare(self, exchange='', exchange_type='direct', virtual_host='/', passive=False, durable=False, auto_delete=False, internal=False, arguments=None): """Declare an Exchange. :param str exchange: Exchange name :param str exchange_type: Exchange type :param str virtual_host: Virtual host name :param bool passive: Do not create :param bool durable: Durable exchange :param bool auto_delete: Automatically delete when not in use :param bool internal: Is the exchange for use by the broker only. :param dict|None arguments: Exchange key/value arguments :raises ApiError: Raises if the remote server encountered an error. :raises ApiConnectionError: Raises if there was a connectivity issue. :rtype: None """ virtual_host = quote(virtual_host, '') if passive: return self.get(exchange, virtual_host=virtual_host) exchange_payload = json.dumps( { 'durable': durable, 'auto_delete': auto_delete, 'internal': internal, 'type': exchange_type, 'arguments': arguments or {}, 'vhost': urlparse.unquote(virtual_host) } ) return self.http_client.put(API_EXCHANGE % ( virtual_host, exchange ), payload=exchange_payload)