ForcePilot/backend/package/yuxi/channel/extensions/imessage/errors.py

36 lines
778 B
Python
Raw Normal View History

from __future__ import annotations
class IMessageError(Exception):
pass
class IMessageAuthError(IMessageError):
pass
class IMessageConnectionError(IMessageError):
pass
class IMessageSendError(IMessageError):
pass
class IMessageMediaError(IMessageError):
pass
def classify_http_error(status_code: int, body: str = "") -> IMessageError:
if status_code == 401 or status_code == 403:
return IMessageAuthError(f"HTTP {status_code}: {body}")
if status_code >= 500:
return IMessageConnectionError(f"HTTP {status_code}: {body}")
return IMessageError(f"HTTP {status_code}: {body}")
def get_retry_after_ms(error: Exception) -> int | None:
if isinstance(error, IMessageConnectionError):
return 5000
return None