Ajout du fichier worker
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# workers/auth_worker.py
|
||||
from PySide6.QtCore import QThread, Signal
|
||||
from config.constants import Urls
|
||||
from fivemserver.get_server_token import GetServerTokenForDiscord
|
||||
from tools.http_client import ApiError # Importe ton exception personnalisée
|
||||
|
||||
class AuthWorker(QThread):
|
||||
# Signaux pour communiquer avec l'UI
|
||||
# finished(success, session_id, error_message)
|
||||
finished = Signal(bool, str, str)
|
||||
|
||||
def __init__(self, discord_user_id: str, parent=None):
|
||||
super().__init__(parent)
|
||||
self.discord_user_id = discord_user_id
|
||||
self._is_running = True
|
||||
|
||||
def run(self):
|
||||
"""Exécuté dans un thread séparé."""
|
||||
session_id = ""
|
||||
error_msg = ""
|
||||
success = False
|
||||
|
||||
if not self.discord_user_id or self.discord_user_id.isspace():
|
||||
self.finished.emit(False, "", "Identifiant Discord invalide.")
|
||||
return
|
||||
|
||||
try:
|
||||
# 1. Authentification (Récupération du token)
|
||||
# Assure-toi que GetServerTokenForDiscord à un timeout interne !
|
||||
print(f"[AuthWorker] Tentative d'authentification pour {self.discord_user_id}...")
|
||||
token = GetServerTokenForDiscord.authenticate(Urls.API_URL.value)
|
||||
|
||||
if not token:
|
||||
raise ApiError("Le serveur n'a pas renvoyé de token valide.")
|
||||
|
||||
session_id = token
|
||||
print(f"[AuthWorker] Token récupéré: {session_id[:10]}...")
|
||||
|
||||
# 2. Enregistrement de l'utilisateur (C'est souvent ici que ça bloque SSL)
|
||||
print(f"[AuthWorker] Enregistrement de l'utilisateur...")
|
||||
GetServerTokenForDiscord.register_discord_user(
|
||||
self.discord_user_id,
|
||||
session_id
|
||||
)
|
||||
|
||||
print(f"[AuthWorker] Authentification réussie.")
|
||||
success = True
|
||||
|
||||
except ApiError as e:
|
||||
error_msg = f"Erreur API: {str(e)}"
|
||||
print(f"[AuthWorker] {error_msg}")
|
||||
except Exception as e:
|
||||
# Capture large pour le debug SSL de Python 3.14
|
||||
error_msg = f"Erreur critique (SSL/Réseau): {str(e)}"
|
||||
print(f"[AuthWorker] {error_msg}")
|
||||
finally:
|
||||
# On émet le signal de fin avec les résultats
|
||||
if self._is_running:
|
||||
self.finished.emit(success, session_id, error_msg)
|
||||
|
||||
def stop(self):
|
||||
"""Permet d'annuler le thread proprement."""
|
||||
self._is_running = False
|
||||
self.requestInterruption() # Demande l'interruption à QThread
|
||||
Reference in New Issue
Block a user