You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ce projet a pour but de me faire gagner du temps lors de mes réservations UCPA via Gymlib.
3
+
Ce projet a pour but d'automatiser et simplifier les réservations via Gymlib et UCPA, en minimisant les étapes manuelles.
4
4
5
5
Voici les différentes étapes pour pouvoir préparer correctement sa venue :
6
6
7
7

8
8
9
-
Le projet est composé actuellement de 5 grandes étapes :
9
+
Sur ce schéma, on peut voir des tâches sans valeur ajoutée comme remplir le formulaire de contremarque et les deux temps d'attentes de validation.
10
10
11
-
1. Vérifier qu'une nouvelle réservation a été demandée sur Gymlib
12
-
2. Remplir le formulaire de contremarque UCPA
13
-
3. Recevoir une notification dès que l'UCPA a validé les informations avec des créneaux arrangeants qui sont disponibles
14
-
4. Créer des évènements dans un calendrier et proposer une url pour s'abonner au calendrier `/reservations/calendar`.
15
-
5. Créer un pass Apple Wallet qui se met à jour pour chaque réservation
11
+
Pour ces différentes raisons, j'ai automatisé les étapes facilement automatisables jusqu'à la réservation et après la réservation.
12
+
Ce qui me permet d'avoir juste à faire une demande de code sur Gymlib, et choisir mon créneau horaire sur le site de l'UCPA.
13
+
L'après-réservation est transparente pour moi, car je n'ai rien à faire pour avoir les réservations dans mon calendrier,
14
+
et j'ai le QRCode sous la main à mon arrivée.
16
15
17
-
A venir :
16
+
## Plus en détail
18
17
19
-
2. Me notifier de créneaux qui m'arrangent qui se libèrent
18
+
Dans le code, les différentes étapes sont lancées par un CRON et sont découpées de cette manière :
20
19
21
-
La réservation du créneau se fait donc toujours manuellement sur le site de l'UCPA, mais toutes les étapes contraignantes
22
-
et d'attente sont désormais automatisées.
20
+
### 1. Vérifier qu'une nouvelle réservation a été demandée sur Gymlib
23
21
24
-
## Usage
22
+
Le code analyse les e-mails reçus en provenance de Gymlib et récupère le code de contremarque dans le contenu de ce dernier.
23
+
24
+
### 2. Remplir le formulaire de contremarque UCPA
25
+
26
+
Le formulaire ayant un token CSRF, le plus rapide à mettre en place a été de faire remplir le formulaire en utilisant [Puppeteer](https://pptr.dev/),
27
+
presque tous les champs du formulaire peuvent être remplis dynamiquement grâce à la variable d'environnement : `FORM_RESPONSE`.
28
+
D'ailleurs, en phase de tests, vous pouvez désactiver l'envoi du formulaire grâce à la variable d'environnement `FORM_SUBMIT_ENABLED=false`.
29
+
30
+
### 3. Recevoir une notification dès que l'UCPA a validé les informations avec des créneaux arrangeants qui sont disponibles
31
+
32
+
Même principe que pour la première étape, le code détecte un e-mail en provenance de l'UCPA pour valider la contremarque
33
+
et dire que l'e-billet est disponible sur votre espace personnel. Ensuite, le code cherche les créneaux qui vous arrangent, pour cela, il se base sur la variable d'environnement :
34
+
35
+
```dotenv
36
+
TIME_SLOTS_PREFERENCES='{
37
+
"sun": [
38
+
"17h00",
39
+
],
40
+
"mon": [
41
+
"19h00",
42
+
"20h00"
43
+
],
44
+
}'
45
+
```
46
+
47
+
Cette variable d'environnement n'a pas besoin d'avoir tous les jours de la semaine renseignée.
48
+
49
+
### 4. Créer des évènements dans un calendrier
50
+
51
+
Tous les créneaux réservés sont ajoutés à un calendrier en utilisant la librairie `ical-generator`.
52
+
53
+
Le calendrier est un lien auquel on s'abonne, il est disponible sous l'url `/reservations/calendar/${CALENDAR_ID}`,
54
+
où `CALENDAR_ID` correspond à ce qu'il y a dans la variable d'environnement.
55
+
56
+
### 5. Mettre à jour le pass Apple Wallet pour chaque réservation à venir
57
+
58
+
La génération du pass est géré par la librairie `passkit-generator`, il faut avoir un compte Apple Developer pour générer des pass.
59
+
60
+
Les prérequis sont :
61
+
62
+
- Avoir un compte Apple Developer
63
+
- Générer tous les certificats nécessaires aux pass et les avoir mis dans le dossier `certs`
64
+
- Fournir les variables d'environnement nécessaire pour le pass
65
+
66
+
```dotenv
67
+
CERTIFICATES_SIGNER_KEY_PASSPHRASE=
68
+
PASS_TYPE_IDENTIFIER=
69
+
PASS_TEAM_IDENTIFIER=
70
+
```
71
+
72
+
Pour le pass, il faut d'abord en créer un. Pour ça, nous devons récupérer un token :
0 commit comments