def __init__( self, url: str, logger: Logger, proxy: Optional[str] = None, proxy_headers: Optional[Dict[str, str]] = None, ping_interval: float = 5, # seconds receive_timeout: float = 3, receive_buffer_size: int = 1024, trace_enabled: bool = False, all_message_trace_enabled: bool = False, ping_pong_trace_enabled: bool = False, on_message_listener: Optional[Callable[[str], None]] = None, on_error_listener: Optional[Callable[[Exception], None]] = None, on_close_listener: Optional[Callable[[int, Optional[str]], None]] = None, connection_type_name: str = "Socket Mode", ssl_context: Optional[ssl.SSLContext] = None, ): self.url = url self.logger = logger self.proxy = proxy self.proxy_headers = proxy_headers self.ping_interval = ping_interval self.receive_timeout = receive_timeout self.receive_buffer_size = receive_buffer_size if self.receive_buffer_size < 16: raise SlackClientConfigurationError( "Too small receive_buffer_size detected.") self.session_id = str(uuid4()) self.trace_enabled = trace_enabled self.all_message_trace_enabled = all_message_trace_enabled self.ping_pong_trace_enabled = ping_pong_trace_enabled self.last_ping_pong_time = None self.consecutive_check_state_error_count = 0 self.sock = None # To avoid ssl.SSLError: [SSL: BAD_LENGTH] bad length self.sock_receive_lock = Lock() self.sock_send_lock = Lock() self.on_message_listener = on_message_listener self.on_error_listener = on_error_listener self.on_close_listener = on_close_listener self.connection_type_name = connection_type_name self.ssl_context = ssl_context
def delete_bot(self, *, enterprise_id: Optional[str], team_id: Optional[str]) -> None: none = "none" e_id = enterprise_id or none t_id = team_id or none workspace_path = f"{self.client_id}/{e_id}-{t_id}" objects = self.s3_client.list_objects( Bucket=self.bucket_name, Prefix=f"{workspace_path}/bot-", ) for content in objects.get("Contents", []): key = content.get("Key") if key is not None: self.logger.info(f"Going to delete bot installation ({key})") try: self.s3_client.delete_object( Bucket=self.bucket_name, Key=content.get("Key"), ) except Exception as e: # skipcq: PYL-W0703 message = f"Failed to find bot installation data for enterprise: {e_id}, team: {t_id}: {e}" raise SlackClientConfigurationError(message)
def __init__( self, url: str, logger: Logger, proxy: Optional[str] = None, ping_interval: float = 10, # seconds receive_timeout: float = 5, receive_buffer_size: int = 1024, trace_enabled: bool = False, all_message_trace_enabled: bool = False, ping_pong_trace_enabled: bool = False, on_message_listener: Optional[Callable[[str], None]] = None, on_error_listener: Optional[Callable[[Exception], None]] = None, on_close_listener: Optional[Callable[[int, Optional[str]], None]] = None, ): self.url = url self.logger = logger self.proxy = proxy self.ping_interval = ping_interval self.receive_timeout = receive_timeout self.receive_buffer_size = receive_buffer_size if self.receive_buffer_size < 16: raise SlackClientConfigurationError( "Too small receive_buffer_size detected.") self.session_id = str(uuid4()) self.trace_enabled = trace_enabled self.all_message_trace_enabled = all_message_trace_enabled self.ping_pong_trace_enabled = ping_pong_trace_enabled self.last_ping_pong_time = None self.consecutive_check_state_error_count = 0 self.sock = None self.on_message_listener = on_message_listener self.on_error_listener = on_error_listener self.on_close_listener = on_close_listener
def delete_installation( self, *, enterprise_id: Optional[str], team_id: Optional[str], user_id: Optional[str] = None, ) -> None: none = "none" e_id = enterprise_id or none t_id = team_id or none workspace_path = f"{self.client_id}/{e_id}-{t_id}" objects = self.s3_client.list_objects( Bucket=self.bucket_name, Prefix=f"{workspace_path}/installer-{user_id or ''}", ) deleted_keys = [] for content in objects.get("Contents", []): key = content.get("Key") if key is not None: self.logger.info(f"Going to delete installation ({key})") try: self.s3_client.delete_object( Bucket=self.bucket_name, Key=key, ) deleted_keys.append(key) except Exception as e: # skipcq: PYL-W0703 message = f"Failed to find bot installation data for enterprise: {e_id}, team: {t_id}: {e}" raise SlackClientConfigurationError(message) try: no_user_id_key = key.replace(f"-{user_id}", "") if not no_user_id_key.endswith("installer-latest"): self.s3_client.delete_object( Bucket=self.bucket_name, Key=no_user_id_key, ) deleted_keys.append(no_user_id_key) except Exception as e: # skipcq: PYL-W0703 message = f"Failed to find bot installation data for enterprise: {e_id}, team: {t_id}: {e}" raise SlackClientConfigurationError(message) # Check the remaining installation data objects = self.s3_client.list_objects( Bucket=self.bucket_name, Prefix=f"{workspace_path}/installer-", MaxKeys=10, # the small number would be enough for this purpose ) keys = [ c.get("Key") for c in objects.get("Contents", []) if c.get("Key") not in deleted_keys ] # If only installer-latest remains, we should delete the one as well if len(keys) == 1 and keys[0].endswith("installer-latest"): content = objects.get("Contents", [])[0] try: self.s3_client.delete_object( Bucket=self.bucket_name, Key=content.get("Key"), ) except Exception as e: # skipcq: PYL-W0703 message = f"Failed to find bot installation data for enterprise: {e_id}, team: {t_id}: {e}" raise SlackClientConfigurationError(message)