fix(pronote): ignorer les informations en mode qr_token
En mode qr_token, get_informations() retourne [] sans connexion ni verrou, ce qui évite l'échec systématique de PageActualites (erreur pronotepy 20) et le refresh redondant du token sur les instances HubEduConnect. Refs #21 Refs #20
This commit is contained in:
+13
-5
@@ -2279,6 +2279,12 @@ méthodes agenda/devoirs ne transforment jamais une erreur en liste vide : elles
|
||||
version expurgée puis lèvent une erreur expurgée avec `from None`. Les méthodes de messages et
|
||||
d'informations sont non critiques et peuvent retourner une liste vide avec un warning.
|
||||
|
||||
En mode `qr_token`, `get_informations()` est ignorée : elle retourne immédiatement `[]` sans
|
||||
connexion, verrou ni appel réseau, et journalise un message INFO unique. L'endpoint
|
||||
`PageActualites` renvoie en effet une erreur pronotepy 20 sur les instances HubEduConnect
|
||||
testées, provoquant un refresh redondant du token. Ce comportement n'est pas configurable ;
|
||||
`get_messages()` n'est pas concernée par ce contournement.
|
||||
|
||||
Les objets renvoyés par `client.homework(start, end)` couvrent une fenêtre. Le résultat destiné à
|
||||
un jour cible est donc filtré explicitement sur `homework.date == target_date`.
|
||||
|
||||
@@ -2290,11 +2296,13 @@ d'authentification et de récupération par un verrou POSIX local non bloquant,
|
||||
`.pronote_auth_state.json.lock`, à côté de `.pronote_auth_state.json`.
|
||||
|
||||
Le verrou couvre l'ensemble du cycle QR/token : chargement de l'état, connexion par token ou
|
||||
enrôlement QR initial, opération de données (agenda, devoirs, messages ou informations), puis
|
||||
persistance des credentials actualisées. Une tentative concurrente échoue immédiatement avec une
|
||||
erreur d'état d'authentification expurgée ; elle ne patiente pas et ne relance pas
|
||||
l'authentification. Le contenu du token, le PIN et les autres credentials ne sont jamais inclus
|
||||
dans les logs ni dans ce message d'erreur.
|
||||
enrôlement QR initial, opération de données (agenda, devoirs, messages ; informations hors mode
|
||||
`qr_token`), puis persistance des credentials actualisées. En mode `qr_token`, `get_informations()`
|
||||
est ignorée (retour immédiat `[]` sans connexion ni verrou) : elle n'acquiert pas le verrou et ne
|
||||
déclenche aucune persistance. Une tentative concurrente échoue immédiatement avec une erreur d'état
|
||||
d'authentification expurgée ; elle ne patiente pas et ne relance pas l'authentification. Le contenu
|
||||
du token, le PIN et les autres credentials ne sont jamais inclus dans les logs ni dans ce message
|
||||
d'erreur.
|
||||
|
||||
Ce mécanisme est un contrat **local** : il coordonne des processus sur le même hôte Linux et un
|
||||
filesystem local. Pour des déploiements conteneurisés, les conteneurs qui partagent le même compte
|
||||
|
||||
Reference in New Issue
Block a user