Files
WebAurion-API/README.md
2024-12-08 14:39:34 +01:00

257 lines
7.0 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# WebAurion API
**WebAurion API** est une bibliothèque Node.js écrite en TypeScript pour interagir avec l'API de WebAurion.
Elle permet de récupérer facilement **les notes** et **l'emploi du temps** depuis le site WebAurion en utilisant seulement des requêtes HTTP.
---
## 📦 Installation
### 1. Prérequis
- **Node.js** (version 16 ou supérieure recommandée)
- **npm** ou **yarn**
### 2. Installation
Pour installer la bibliothèque dans votre projet, vous pouvez utiliser la commande suivante :
```bash
npm i webaurion-api
```
### 2. Utilisation en local avec `npm link`
Pour utiliser la bibliothèque dans un autre projet sans passer par un registre npm public :
1. Clonez ce dépôt :
```bash
git clone https://github.com/dd060606/WebAurion-API.git
cd WebAurion-API
```
2. Installez les dépendances :
```bash
npm install
```
3. Compilez la bibliothèque :
```bash
npm run build
```
4. Créez un lien global :
```bash
npm link
```
5. Dans votre projet cible, ajoutez un lien vers la bibliothèque :
```bash
npm link webaurion-api
```
# 🛠️ Fonctionnalités
- **Récupération des notes :**
Obtenez facilement vos notes via votre compte WebAurion.
- **Récupération de l'emploi du temps :**
Accédez à votre emploi du temps.
# 📘 Exemple d'utilisation
## 1. Importer la bibliothèque
Assurez-vous que la bibliothèque est installée ou liée (voir section **Installation**).
## 2. Récupérer l'emploi du temps
```typescript
import { login } from "webaurion-api";
//Le planning
async function fetchPlanning() {
const username = "ENTRER VOTRE NOM D'UTILISATEUR";
const password = "ENTRER VOTRE MOT DE PASSE";
try {
const session = await login(username, password);
const planning = await session.getPlanningApi().fetchPlanning();
console.log("Mon emploi du temps :", planning);
} catch (error) {
console.error(
"Erreur lors de la récupération de l'emploi du temps :",
error,
);
}
}
fetchPlanning();
```
## 3. Récupérer les notes
```typescript
import { login, noteAverage } from "webaurion-api";
//Les notes
async function fetchNotes() {
const username = "ENTRER VOTRE NOM D'UTILISATEUR";
const password = "ENTRER VOTRE MOT DE PASSE";
try {
const session = await login(username, password);
const notes = await session.getNotesApi().fetchNotes();
console.log("Mes notes: ", JSON.stringify(notes, null, 2));
console.log("Mes moyennes: ");
notes.forEach((note) => {
console.log(note.code + ": " + noteAverage(note.notes));
});
} catch (error) {
console.error("Erreur lors de la récupération des notes :", error);
}
}
fetchNotes();
```
## 📋 Les Types
Les réponses des fonctions renvoient les données récupérées depuis WebAurion au format JSON pour faciliter leur utilisation.
### 🗓️ L'emploi du temps
L'utilisation de `session.getPlanningApi().fetchPlanning()` renvoie un tableau du type `PlanningEvent` qui représente un événement dans l'emploi du temps d'un utilisateur.
```typescript
type PlanningEvent = {
id: string; // Identifiant unique de l'événement
title: string; // Titre de l'événement
subject: string; // La matière de l'événement (ex: "Mathématiques")
room: string; // Salle de l'événement
instructors: string; // Enseignants responsables de l'événement
learners: string; // Étudiants inscrits à cet événement
start: string; // Date et heure de début de l'événement
end: string; // Date et heure de fin de l'événement
className: string; // Nom de la classe associée (ex: "TP", "COURS")
};
```
**Exemple**:
```typescript
const exampleEvent: PlanningEvent = {
id: "15447267",
title: "Mathématiques S1",
subject: "Mathématiques",
room: "A2_46 ISEN_DP ROB",
instructors: "Prof1 / Prof2",
learners: "CIR1 / CEST1",
start: "2024-11-19T08:00:00+0100",
end: "2024-11-19T10:00:00+0100",
className: "COURS",
};
```
### 📝 Les notes
L'utilisation de `session.getNotesApi().fetchNotes()` renvoie un tableau du type `NotesList` qui représente un ensemble de notes associées à un code de cours.
```typescript
type NotesList = {
code: string; // Code du cours ou de l'évaluation
notes: Note[]; // Liste des notes associées à ce code
};
type Note = {
date: string; // Date de la note
code: string; // Code du cours ou de l'évaluation
subject: string; // Matière concernée
note: string; // La note obtenue
absence: string; // Absence (si applicable)
description: string; // Appréciation de l'évaluation
instructor: string; // Enseignant responsable de l'évaluation
};
```
**Exemple**:
```typescript
const exampleNotesList: NotesList = {
code: "24_CIR1N_A1_S1_PHYSIQUE",
notes: [
{
date: "02/10/2024",
code: "24_CIR1N_A1_S1_PHYSIQUE",
subject: "Physique DS1 S1",
note: "13.00",
absence: "",
description: "",
instructor: "Prof1",
},
{
date: "13/11/2024",
code: "24_CIR1N_A1_S1_PHYSIQUE",
subject: "Physique DS2 S1",
note: "17.00",
absence: "",
description: "",
instructor: "Prof1",
},
],
};
```
## 🧪 Tests avec Jest
Ce projet utilise [Jest](https://jestjs.io/) pour effectuer des tests unitaires et fonctionnels. Les tests se trouvent dans le répertoire `tests/`.
Vous pouvez vous inspirer du code dans les tests si besoin.
### 📂 Répertoire des tests
- **`tests/NotesApi.test.ts`** : Tests pour les fonctionnalités liées à la récupération des notes.
- **`tests/PlanningApi.test.ts`** : Tests pour les fonctionnalités liées à la récupération de l'emploi du temps.
- **`tests/Session.test.ts`** : Tests pour la gestion des sessions utilisateur.
- **`tests/Cache.test.ts`** : Tests pour la vitesse d'exécution des requêtes
### 🚀 Lancer les tests
```bash
npm test
```
## 🔧 Configuration du fichier `.env`
Pour utiliser correctement la bibliothèque et exécuter les tests, vous devez configurer un fichier `.env` pour stocker vos identifiants de connexion et autres variables sensibles.
### 📁 Fichier `.env`
Un fichier exemple est fourni dans le projet : `.env-example`. Voici les étapes pour le configurer:
1. **Copier le fichier exemple**
Dans le dossier racine du projet, créez un fichier `.env` à partir de l'exemple fourni:
```bash
cp .env-example .env
```
2. **Remplir les valeurs**
Ouvrez le fichier .env et complétez les informations nécessaires:
```env
TEST_USERNAME=votre-identifiant
TEST_PASSWORD=votre-mot-de-passe
```
- `TEST_USERNAME` : Lidentifiant WebAurion utilisé pour les tests.
- `TEST_PASSWORD` : Le mot de passe correspondant.
⚠️ **Note** : Ces informations sont utilisées uniquement dans le cadre des tests et ne doivent pas être partagées publiquement.