mirror of
https://github.com/dd060606/WebAurion-API.git
synced 2026-01-18 16:47:26 +01:00
257 lines
7.0 KiB
Markdown
257 lines
7.0 KiB
Markdown
# 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` : L’identifiant 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.
|