from typing import Optional
[docs]
class ActionFailure(Exception):
"""Exception raised when an action fails to execute successfully."""
def __init__(self, message: str, action_name: Optional[str] = None) -> None:
self.message = message
self.action_name = action_name
super().__init__(self.message)
def set_action_name(self, action_name: str) -> None:
"""Set the name of the action that failed."""
self.action_name = action_name
[docs]
def __str__(self) -> str:
"""Return a formatted error message."""
return (
f"Action failure in {self.action_name}: {self.message}"
if self.action_name
else f"Action failure: {self.message}"
)
[docs]
class AssetMisconfiguration(ActionFailure):
"""Exception raised when an asset is misconfigured."""
[docs]
def __str__(self) -> str:
"""Return a formatted error message."""
return (
f"Asset misconfiguration in {self.action_name}: {self.message}"
if self.action_name
else f"Asset misconfiguration: {self.message}"
)
[docs]
class SoarAPIError(ActionFailure):
"""Exception raised when there is an error with the SOAR REST API."""
[docs]
def __str__(self) -> str:
"""Return a formatted error message."""
return (
f"SOAR REST API error in {self.action_name}: {self.message}"
if self.action_name
else f"SOAR REST API error: {self.message}"
)
[docs]
class ActionRegistrationError(Exception):
"""Exception raised when there is an error registering an action."""
def __init__(self, action: str) -> None:
self.action = action
super().__init__(f"Error registering action: {action}")
__all__ = [
"ActionFailure",
"ActionRegistrationError",
"AssetMisconfiguration",
"SoarAPIError",
]