""" Domain-spezifische Exceptions für AccountForger """ from typing import Optional, Dict, Any class AccountForgerException(Exception): """Basis-Exception für alle AccountForger-spezifischen Fehler""" def __init__(self, message: str, details: Optional[Dict[str, Any]] = None): super().__init__(message) self.message = message self.details = details or {} class AccountCreationException(AccountForgerException): """Fehler bei Account-Erstellung""" def __init__(self, message: str, platform: Optional[str] = None, error_type: Optional[str] = None, recovery_suggestion: Optional[str] = None): details = { "platform": platform, "error_type": error_type, "recovery_suggestion": recovery_suggestion } super().__init__(message, details) self.platform = platform self.error_type = error_type self.recovery_suggestion = recovery_suggestion @property def user_friendly_message(self) -> str: """Gibt eine benutzerfreundliche Fehlermeldung zurück""" if self.recovery_suggestion: return f"{self.message}\n\nLösungsvorschlag: {self.recovery_suggestion}" return self.message class FingerprintException(AccountForgerException): """Fehler bei Fingerprint-Operationen""" pass class SessionException(AccountForgerException): """Fehler bei Session-Operationen""" pass class RateLimitException(AccountCreationException): """Rate-Limit wurde erreicht""" def __init__(self, platform: str, retry_after: Optional[int] = None): message = f"Zu viele Anfragen an {platform}" recovery = f"Bitte warten Sie {retry_after} Sekunden" if retry_after else "Bitte warten Sie einige Minuten" super().__init__( message=message, platform=platform, error_type="rate_limit", recovery_suggestion=recovery ) self.retry_after = retry_after class CaptchaRequiredException(AccountCreationException): """Captcha-Verifizierung erforderlich""" def __init__(self, platform: str): super().__init__( message=f"{platform} erfordert Captcha-Verifizierung", platform=platform, error_type="captcha", recovery_suggestion="Versuchen Sie es später erneut oder nutzen Sie einen anderen Proxy" ) class ValidationException(AccountForgerException): """Validierungsfehler""" def __init__(self, field: str, message: str): super().__init__(f"Validierungsfehler bei {field}: {message}") self.field = field class ProxyException(AccountForgerException): """Proxy-bezogene Fehler""" pass class NetworkException(AccountForgerException): """Netzwerk-bezogene Fehler""" def __init__(self, message: str = "Netzwerkfehler aufgetreten"): super().__init__( message=message, details={"recovery_suggestion": "Überprüfen Sie Ihre Internetverbindung"} )