Files
AccountForger-neuerUpload/domain/exceptions.py
Claude Project Manager 04585e95b6 Initial commit
2025-08-01 23:50:28 +02:00

96 Zeilen
3.0 KiB
Python

"""
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"}
)