UNPKG

@omichalo/ffttapi-node

Version:

🏓 API Node.js/TypeScript pour la FFTT (FĂ©dĂ©ration Française de Tennis de Table) - Consommateur de l'API officielle Smartping 2.0

248 lines (185 loc) ‱ 7.04 kB
# 🏓 FFTT API - Node.js/TypeScript [![npm version](https://badge.fury.io/js/@omichalo%2Fffttapi-node.svg)](https://badge.fury.io/js/@omichalo%2Fffttapi-node) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![TypeScript](https://img.shields.io/badge/TypeScript-4.7+-blue.svg)](https://www.typescriptlang.org/) [![Node.js](https://img.shields.io/badge/Node.js-14+-green.svg)](https://nodejs.org/) [![Tests](https://img.shields.io/badge/Tests-100%25%20passing-brightgreen.svg)](https://github.com/omichalo/FFTT-API-typescript) **FFTT API** permet de consommer facilement l'API officielle **Smartping 2.0** de la **FĂ©dĂ©ration Française de Tennis de Table** en utilisant Node.js et TypeScript. ## ✹ FonctionnalitĂ©s ### 🏱 **Gestion des Clubs et Organismes** - Liste des organismes par type - Liste des clubs par dĂ©partement - Liste des clubs par nom - DĂ©tail complet d'un club - Divisions par Ă©preuve ### đŸ‘€ **Gestion des Joueurs** - Recherche de joueurs par nom/prĂ©nom - DĂ©tail complet d'un joueur par licence - Classement d'un joueur - Historique des parties - Points virtuels et classement ### 🏆 **Gestion des CompĂ©titions** - Liste des Ă©preuves par organisme - RĂ©sultats individuels par division - Classement critĂ©rium - Gestion des Ă©quipes et poules - DĂ©tail des rencontres ### 🔐 **Authentification et SĂ©curitĂ©** - Authentification MD5 + HMAC-SHA1 - Gestion des timestamps FFTT - Validation des rĂ©ponses API - Gestion des erreurs robuste ## 🚀 Installation ### Avec npm ```bash npm install @omichalo/ffttapi-node ``` ### Avec yarn ```bash yarn add @omichalo/ffttapi-node ``` ## 📋 Configuration ### 1. CrĂ©ez un fichier `.env` Ă  la racine de votre projet : ```bash cp env.example .env ``` ### 2. Configurez vos identifiants FFTT : ```env FFTT_TEST_ID=your_fftt_id_here FFTT_TEST_PASSWORD=your_fftt_password_here ``` **⚠ Important :** Vous devez obtenir vos identifiants auprĂšs de la FFTT pour accĂ©der Ă  l'API officielle. ## đŸ’» Exemples d'utilisation ### 🔐 Initialisation et Authentification ```typescript import { FFTTAPI } from "@omichalo/ffttapi-node"; // Initialisation de l'API const api = new FFTTAPI("identifiant", "password"); // Authentification try { const result = await api.initialize(); console.log("✅ API initialisĂ©e avec succĂšs"); } catch (error) { console.error("❌ Erreur d'authentification:", error); } ``` ### 🏱 Gestion des Clubs ```typescript // RĂ©cupĂ©ration des dĂ©tails d'un club const clubDetails = await api.getClubDetails("75010001"); console.log("Club:", clubDetails.nom, "Ă ", clubDetails.ville); // Recherche de clubs par nom const clubs = await api.getClubsByName("TENNIS"); clubs.forEach(club => console.log(`- ${club.nom} (${club.numero})`)); ``` ### đŸ‘€ Gestion des Joueurs ```typescript // Recherche de joueurs par nom const joueurs = await api.getJoueursByNom("DUPONT"); joueurs.forEach(joueur => { console.log(`${joueur.nom} ${joueur.prenom} - Licence: ${joueur.licence}`); }); // DĂ©tail d'un joueur par licence const joueur = await api.getJoueurDetailsByLicence("1234567"); console.log("Points:", joueur.points, "Classement:", joueur.classement); ``` ### 🏆 Gestion des CompĂ©titions ```typescript // Liste des Ă©preuves const epreuves = await api.getEpreuves(75, "E"); // Organisme 75, type Équipes epreuves.forEach(epreuve => { console.log(`${epreuve.libelle} (ID: ${epreuve.id})`); }); // RĂ©sultats individuels const resultats = await api.getResultatsIndividuels(257, 7501, "poule"); console.log(`${resultats.length} rĂ©sultats trouvĂ©s`); // Classement critĂ©rium const classements = await api.getClassementCriterium(); classements.slice(0, 5).forEach((clt, index) => { console.log(`${index + 1}. ${clt.nom} - ${clt.points} pts`); }); ``` ## đŸ§Ș Tests ### Tests Unitaires ```bash # Tests avec couverture complĂšte npm test # Tests en mode watch npm run test:watch # Tests pour CI/CD npm run test:ci ``` ### Tests d'IntĂ©gration ```bash # Tests avec l'API FFTT rĂ©elle npm run test:integration:real # Tests d'intĂ©gration en mode watch npm run test:integration:watch ``` ## 📩 Scripts disponibles - `npm run build` - Compilation TypeScript - `npm test` - ExĂ©cution des tests avec couverture - `npm run test:watch` - Tests en mode watch - `npm run test:ci` - Tests pour l'intĂ©gration continue - `npm run test:integration` - Tests d'intĂ©gration - `npm run lint` - VĂ©rification du code avec ESLint - `npm run format` - Formatage du code avec Prettier ## đŸ—ïž Architecture ``` source/ ├── Core/ │ ├── FFTTAPI.ts # Classe principale de l'API │ └── ApiRequest.ts # Gestion des requĂȘtes HTTP ├── Models/ │ ├── FFTTInterfaces.ts # Interfaces TypeScript │ └── ResponseData.interface.ts ├── Services/ │ ├── Utils.service.ts # Utilitaires │ └── RencontreDetailsFactory.service.ts └── Tests/ ├── Core/ # Tests des fonctionnalitĂ©s principales ├── Integration/ # Tests d'intĂ©gration ├── Models/ # Tests des modĂšles └── Services/ # Tests des services ``` ## 🔧 Configuration TypeScript Le package inclut des dĂ©finitions TypeScript complĂštes pour une expĂ©rience de dĂ©veloppement optimale : ```typescript // Types fortement typĂ©s pour toutes les rĂ©ponses API interface ClubDetails { idClub: string; nom: string; numero: string; ville: string; // ... autres propriĂ©tĂ©s } interface JoueurDetails { nom: string; prenom: string; licence: string; points: number; // ... autres propriĂ©tĂ©s } ``` ## 📚 Documentation - **Tests d'intĂ©gration :** [INTEGRATION_TESTS.md](./INTEGRATION_TESTS.md) - **SpĂ©cifications API :** [specifications-smartping-structured.md](./specifications-smartping-structured.md) - **Exemples d'utilisation :** Voir le dossier `examples/` ## đŸ€ Contribution Les contributions sont les bienvenues ! N'hĂ©sitez pas Ă  : 1. Fork le projet 2. CrĂ©er une branche feature (`git checkout -b feature/AmazingFeature`) 3. Commit vos changements (`git commit -m 'Add some AmazingFeature'`) 4. Push vers la branche (`git push origin feature/AmazingFeature`) 5. Ouvrir une Pull Request ## 📄 Licence Ce projet est sous licence MIT. Voir le fichier [LICENSE](./LICENSE) pour plus de dĂ©tails. ## 🙏 Remerciements - **FFTT** pour l'API officielle Smartping 2.0 - **StephSako** pour le projet original - **CommunautĂ© TypeScript/Node.js** pour les outils et bibliothĂšques ## 📞 Support - **Issues GitHub :** [https://github.com/omichalo/FFTT-API-typescript/issues](https://github.com/omichalo/FFTT-API-typescript/issues) - **Documentation :** [https://github.com/omichalo/FFTT-API-typescript#readme](https://github.com/omichalo/FFTT-API-typescript#readme) --- **🏓 DĂ©veloppĂ© avec ❀ pour la communautĂ© du tennis de table français !**