96 Zeilen
3.0 KiB
Python
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"}
|
|
) |