Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/timetable parser #36

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from
Draft

Feat/timetable parser #36

wants to merge 4 commits into from

Conversation

CookkydeNeat
Copy link
Contributor

Les emplois du temps

Cette pr ajoute une route qui permet d'importer son emploi du temps depuis l'url ICAL donné par mondedt.utt.fr
Elle ajoute aussi les fonctions de base pour le décodage d'un fichier ical et un service pour les UeCourse.

Fonctionnalitées

La route /timetable/import prend comme body
Un uid: qui correspond au hash servant de nom de fichier ical donné par monde.utt.fr, il doit être un hash sha-256

https://monedt.utt.fr/calendrier/1333453[...]62343455.ics
                                |--Cette partie la---|

le service: par défaut montedt (donc on peut laisser vide) mais autorise aussi les services localhost pour faire des tests en local. A l'avenir pourrais autoriser d'autres services au besoin sans trop poser de problème.
(Si y'a un moyen de savoir dans le code si on tourne en local ou en prod je suis preneur je pense que ça faciliterais grandement les choses et rendrais la feature plus sécure)

La route va ensuite télécharger le fichier et le décoder, en extraire les UeCourses avec le nombre de répétitions de chacun, les créer avec leurs TimetableEntry Et enfin ajouter l'utilisateur comme élève de ces UeCourses.
Si l'UeCourse existe déjà elle ne sera pas recréée l'utilisateur sera juste ajouté

Autres modifications

Modification du schéma de la bd:

  • une TimetableEntry ne peux maintenant correspondre qu'a une unique UeCourse
  • Suppression de l'attribut room dans UeCourse qui étais redondant avec le location du TimetableEntry

Ajout de 2 erreurs:

  • Ressource_unavailable: Lorsque il est impossible de télécharger l'emploi du temps depuis le service externe
  • Ressource_invalid_type: Lorsque ce que l'on a téléchargé ne ressemble pas a un ical

Ajout d'une devDependencies et d'un npm script:
http-server, avec la commande dev:serve, permet d'exposer le contenu du dossier dev (dossier ajouté au .gitignore) en local, permettant dans mon cas de télécharger des .ical fais main pour tester

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant