mirror of
https://github.com/langgenius/dify.git
synced 2025-08-01 05:47:27 +00:00
70 lines
1.8 KiB
Python
70 lines
1.8 KiB
Python
from collections.abc import Mapping
|
|
|
|
from pydantic import TypeAdapter
|
|
|
|
|
|
class PluginDaemonError(Exception):
|
|
"""Base class for all plugin daemon errors."""
|
|
|
|
def __init__(self, description: str) -> None:
|
|
self.description = description
|
|
|
|
def __str__(self) -> str:
|
|
# returns the class name and description
|
|
return f"{self.__class__.__name__}: {self.description}"
|
|
|
|
|
|
class PluginDaemonInternalError(PluginDaemonError):
|
|
pass
|
|
|
|
|
|
class PluginDaemonClientSideError(PluginDaemonError):
|
|
pass
|
|
|
|
|
|
class PluginDaemonInternalServerError(PluginDaemonInternalError):
|
|
description: str = "Internal Server Error"
|
|
|
|
|
|
class PluginDaemonUnauthorizedError(PluginDaemonInternalError):
|
|
description: str = "Unauthorized"
|
|
|
|
|
|
class PluginDaemonNotFoundError(PluginDaemonInternalError):
|
|
description: str = "Not Found"
|
|
|
|
|
|
class PluginDaemonBadRequestError(PluginDaemonClientSideError):
|
|
description: str = "Bad Request"
|
|
|
|
|
|
class PluginInvokeError(PluginDaemonClientSideError):
|
|
description: str = "Invoke Error"
|
|
|
|
def _get_error_object(self) -> Mapping:
|
|
try:
|
|
return TypeAdapter(Mapping).validate_json(self.description)
|
|
except Exception:
|
|
return {}
|
|
|
|
def get_error_type(self) -> str:
|
|
return self._get_error_object().get("error_type", "unknown")
|
|
|
|
def get_error_message(self) -> str:
|
|
try:
|
|
return self._get_error_object().get("message", "unknown")
|
|
except Exception:
|
|
return self.description
|
|
|
|
|
|
class PluginUniqueIdentifierError(PluginDaemonClientSideError):
|
|
description: str = "Unique Identifier Error"
|
|
|
|
|
|
class PluginNotFoundError(PluginDaemonClientSideError):
|
|
description: str = "Plugin Not Found"
|
|
|
|
|
|
class PluginPermissionDeniedError(PluginDaemonClientSideError):
|
|
description: str = "Permission Denied"
|