Initial commit
Dieser Commit ist enthalten in:
96
domain/exceptions.py
Normale Datei
96
domain/exceptions.py
Normale Datei
@ -0,0 +1,96 @@
|
||||
"""
|
||||
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"}
|
||||
)
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren