2026-10-02 00:03:48 +08:00
|
|
|
from enum import StrEnum
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ErrorCode(StrEnum):
|
|
|
|
|
INVALID_REQUEST = "INVALID_REQUEST"
|
2026-10-05 00:21:17 +08:00
|
|
|
OFFICIAL_AUTH_REQUIRED = "OFFICIAL_AUTH_REQUIRED"
|
2026-10-02 00:03:48 +08:00
|
|
|
UNAUTHORIZED = "UNAUTHORIZED"
|
|
|
|
|
FORBIDDEN = "FORBIDDEN"
|
|
|
|
|
DEVICE_NOT_FOUND = "DEVICE_NOT_FOUND"
|
|
|
|
|
DEVICE_OFFLINE = "DEVICE_OFFLINE"
|
|
|
|
|
UNSUPPORTED_CAPABILITY = "UNSUPPORTED_CAPABILITY"
|
|
|
|
|
RENDER_FAILED = "RENDER_FAILED"
|
|
|
|
|
UPLOAD_FAILED = "UPLOAD_FAILED"
|
2026-10-14 13:10:33 +08:00
|
|
|
DISPLAY_NOT_CONFIRMED = "DISPLAY_NOT_CONFIRMED"
|
2026-10-02 00:03:48 +08:00
|
|
|
WRITE_RESULT_UNKNOWN = "WRITE_RESULT_UNKNOWN"
|
|
|
|
|
RATE_LIMITED = "RATE_LIMITED"
|
|
|
|
|
INTERNAL_ERROR = "INTERNAL_ERROR"
|
|
|
|
|
CLOUD_UNAVAILABLE = "CLOUD_UNAVAILABLE"
|
|
|
|
|
NOT_FOUND = "NOT_FOUND"
|
|
|
|
|
CONFLICT = "CONFLICT"
|
|
|
|
|
CONFIG_REQUIRED = "CONFIG_REQUIRED"
|
|
|
|
|
WRITE_DISABLED = "WRITE_DISABLED"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FlowError(Exception):
|
2026-10-16 10:30:08 +08:00
|
|
|
def __init__(self, code: ErrorCode, message: str, status: int = 400, details=None):
|
2026-10-02 00:03:48 +08:00
|
|
|
self.code, self.message, self.status = code, message, status
|
2026-10-16 10:30:08 +08:00
|
|
|
self.details = details or {}
|
2026-10-02 00:03:48 +08:00
|
|
|
super().__init__(message)
|