Bienvenue dans le projet d'API développé par Maxime Dubois. Cette API vous permet d'interagir avec différentes données de projet, telles que les informations utilisateurs et les progrès de promotions.
- Deno : 🖥 Serveur backend utilisant Deno
- Oak : 🚂 Framework léger pour créer l'API avec Deno
- GraphQL : 📊 Utilisation de GraphQL pour récupérer des données dynamiques
- dotenv : 🌱 Gestion des variables d'environnement avec Deno
- fetch : 🌐 API native pour effectuer des requêtes HTTP
-
GET /users🧑💼 Récupère la liste des utilisateurs.Cette route permet d'obtenir un tableau d'objets représentant les utilisateurs du système. Chaque objet contient les informations suivantes :
id: Identifiant unique de l'utilisateurlogin: Le nom d'utilisateur (ou identifiant de connexion)
Réponse :
{ "data": { "user": [ { "id": 87, "login": "102" }, { "id": 91, "login": "example" } ] } }Code de statut :
200 OK -
GET /user-info/:username🧑💻 Récupère les informations d'un utilisateur depuis la plateforme Zone01.Cette route permet de récupérer les données d'un utilisateur à partir de son
username(identifiant) sur la plateforme Zone01.Réponse :
{ "user": [ { "id": 123, "login": "example", "firstName": "John", "lastName": "Doe", "auditRatio": 0.551059615204684, "auditsAssigned": 1, "campus": "rouen", "email": "john.doe@example.com", "githubId": 1234, "discordId": null, "discordDMChannelId": null } ] }Code de statut :
200 OK -
GET /gitea-info/:username🚀 Récupère les informations d'un utilisateur depuis Gitea et son heatmap.Cette route permet de récupérer les données de l'utilisateur sur Gitea (utilisant le même
usernameque sur la plateforme Zone01), ainsi que les informations sur son heatmap.Note : Un token d'authentification (
Bearer token) est requis pour accéder à cette route.Réponse :
{ "user": { "id": 123, "login": "example", "full_name": "John Doe", "email": "john.doe@example.com", "avatar_url": "https://zone01normandie.org/git/avatars/0c6851068fae19ad95", "language": "en-US", "is_admin": false, "last_login": "2025-01-22T18:44:11Z", "created": "2022-12-09T10:34:50Z", "restricted": false, "active": true, "prohibit_login": false, "location": "", "website": "", "description": "", "visibility": "public", "followers_count": 3, "following_count": 1, "starred_repos_count": 2, "username": "example" }, "heatmap": [ { "timestamp": 1734604200, "contributions": 1 }, { "timestamp": 1734616800, "contributions": 2 } ] }Code de statut :
200 OK -
GET /promotion-progress/:eventId📊 Récupère l'état de la progression d'une promotion en fonction de l'eventId.Cette route permet d'obtenir les informations sur la progression des étudiants d'une promotion spécifique (identifiée par
eventId), en se basant sur les projets et les groupes associés à l'événement.Réponse :
{ "progress": [ { "user": { "login": "example" }, "grade": 1.6639999999999997, "group": { "status": "finished", "id": 123 }, "object": { "name": "ascii-art-web" } }, { "user": { "login": "example2" }, "grade": 1.8239999999999998, "group": { "status": "working", "id": 456 }, "object": { "name": "ascii-art-web" } } ] }Code de statut :
200 OK -
GET /user-find/:login🧑🏼🎓 Récupère les informations Plateforme d'un utilisateur via sonusername. -
GET /user-gitea/:username📀 Récupère les informations Gitea d'un utilisateur spécifiée par sonusername.
Clonez le repository dans votre répertoire local :
git clone https://github.com/makcimerrr/api-01-edu-zone01rouen.gitPlacez-vous dans le répertoire du projet et exécutez la commande suivante pour installer les dépendances :
deno installCréez un fichier .env à la racine du projet et définissez les variables suivantes :
DOMAIN=your-domain.com
ACCESS_TOKEN=your-access-token
Remplacez
your-domain.cometyour-access-tokenpar les valeurs appropriées.
Pour démarrer le serveur, utilisez la commande suivante :
deno run --env-file=.env --allow-net --allow-env --allow-read src/server.tsCela lancera l'API avec les permissions nécessaires pour accéder au réseau et aux variables d'environnement.
Les tests sont situés dans le dossier tests et peuvent être exécutés avec :
deno test --allow-net --allow-read --allow-env- Fork ce dépôt.
- Créez une branche pour votre fonctionnalité (
git checkout -b feature-nouvelle-fonctionnalité). - Commitez vos changements (
git commit -am 'Ajout d\'une nouvelle fonctionnalité'). - Poussez la branche (
git push origin feature-nouvelle-fonctionnalité). - Créez une Pull Request.