Ajout du fichier worker

This commit is contained in:
2026-03-26 20:46:59 +01:00
parent 1ba0ea6bd6
commit ec07ba25d2
+64
View File
@@ -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