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