Ce projet met en place un serveur Express qui interagit avec l'API GitHub pour récupérer des informations sur le nombre de lignes de code écrites dans différents langages de programmation dans les dépôts GitHub d'un utilisateur. Les données sont mises en cache pour optimiser les performances et réduire le nombre de requêtes vers l'API.
Pour exécuter ce projet, vous aurez besoin de :
- Node.js (version 12 ou ultérieure)
- Un compte GitHub avec un jeton d'accès personnel (PAT)
-
Clonez ce dépôt :
git clone https://github.com/NikXpro/github_stats.git
-
Accédez au répertoire du projet :
cd github_stats
-
Installez les dépendances :
npm install
-
Créez un fichier
.env
et définissez les variables d'environnement suivantes :GITHUB_USERNAME=your_github_username GITHUB_TOKEN=your_github_token PORT=3000 # Optionnel, par défaut 3000
Pour lancer le serveur :
npm start
Le serveur sera disponible à l'adresse http://localhost:3000.
GET /languages/:username
Cet endpoint renvoie le nombre total de lignes de code écrites dans différents langages de programmation pour un utilisateur GitHub donné.
curl http://localhost:3000/languages/github_username
{
"JavaScript": 12345,
"Python": 6789,
"Java": 1011
}
GET /languages/:username/:repoName
Cet endpoint renvoie le nombre total de lignes de code écrites dans différents langages de programmation pour un dépôt GitHub spécifique d'un utilisateur donné.
curl http://localhost:3000/languages/github_username/repository_name
{
"JavaScript": 12345,
"Python": 6789,
"Java": 1011
}
Le cache est stocké dans un fichier cache.json et est chargé au démarrage du serveur. Lorsqu'une requête est traitée, le cache est mis à jour si nécessaire.
Le fichier blacklist.json permet de spécifier des dépôts ou des chemins à ignorer lors du comptage des lignes de code. Le format attendu est le suivant :
{
"repos": ["repo_to_ignore"],
"paths": ["path_to_ignore/file_to_ignore"],
"languages": ["language_to_ignore"]
}
Ce projet utilise le service CodeTabs pour compter les lignes de code dans les dépôts GitHub. Assurez-vous de respecter les termes d'utilisation de ce service lors de son intégration dans vos projets.
Les contributions sont les bienvenues ! Veuillez soumettre une pull request ou ouvrir une issue pour discuter des changements que vous souhaitez apporter.
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.