Semaine 8
Cette semaine nous allons optimiser notre application avec des fonctionnalités avancées pour la rapprocher d’un projet de production.
Lien du front : http://csharp.nouvet.fr/front8/
Rate Limiting
Pour éviter la triche (autoclickers) et protéger le serveur, nous allons limiter le nombre de requêtes possibles sur l’action de click.
Je vous invite à lire la partie sur le Rate Limiting dans le cours Ici.
Configuration
Vous devrez configurer un FixedWindowLimiter dans votre Program.cs.
La limite sera de 10 clics toutes les 10 secondes.
Application
Cette limite devra s’appliquer uniquement sur la route GET /api/Game/Click.
Si un utilisateur dépasse cette limite, il devra recevoir une erreur 429 Too Many Requests.
Revenu Passif
Nous allons ajouter une fonctionnalité de revenu passif. Même quand le joueur ne clique pas, son score doit augmenter légèrement avec le temps.
Je vous invite à lire la partie sur les Background Services dans le cours Ici.
Service
Vous devrez créer un service PassiveIncomeService qui tourne en tâche de fond (Background Service).
Ce service devra ajouter 1 point au score de tous les utilisateurs toutes les 30 secondes.
Vous afficherez un log dans la console à chaque distribution de points.
Test Coverage
Maintenant que vous avez des tests unitaires (Semaine 7), il est intéressant de savoir quelle proportion de votre code est réellement testée.
Je vous invite à lire la partie sur le Code Coverage dans le cours Ici.
Rapport
Vous devrez générer un rapport de couverture HTML pour votre projet.
Vous utiliserez coverlet (inclus de base) et reportgenerator.
L’objectif n’est pas d’atteindre 100%, mais de visualiser les fichiers non testés.
Game Server API Documentation
Base URL: http://localhost:5000/api
Game Endpoints
Click
GET /api/Game/Click
Returns:
{
"count": "integer",
"multiplier": "integer"
}
Errors:
400-NO_PROGRESSION- User does not have a progression429-TOO_MANY_REQUESTS- Rate limit exceeded