@ix-xs/metamob.api 1.0.9 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cache/$.js +8 -0
- package/.cache/areas.json +82 -0
- package/.cache/monsters.json +6648 -0
- package/.cache/servers.json +152 -0
- package/.cache/subareas.json +842 -0
- package/README.md +239 -87
- package/metamobAPI.js +680 -0
- package/package.json +28 -21
- package/Data.json +0 -7702
- package/metamobapi.js +0 -797
package/README.md
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
<div align=center>
|
|
2
|
-
<span style="font-size:30px;">@ix-xs/metamob.api</span><br>
|
|
3
|
-
<br>
|
|
4
|
-
</div>
|
|
5
|
-
|
|
6
1
|
<img align=right src="https://metamob.fr/img/otomai.png">
|
|
7
2
|
<h1><img src="https://metamob.fr/img/logo.png">Metamob</h1>
|
|
3
|
+
<h3>Gérez vos monstres de l'Eternelle Moisson sur Dofus !</h3>
|
|
8
4
|
<a href="https://metamob.fr/connexion">Connectez-vous</a> ou <a href="https://metamob.fr/inscription">Inscrivez-vous</a> pour profiter des avantages du site :
|
|
9
5
|
<ul>
|
|
10
6
|
<li>Suivez votre avancement dans la quête</li>
|
|
@@ -15,106 +11,262 @@
|
|
|
15
11
|
</ul>
|
|
16
12
|
<br>
|
|
17
13
|
<br>
|
|
18
|
-
<h1>🌐API</h1>
|
|
19
|
-
Une clé API sert à interroger les données de Metamob pour pouvoir les utiliser ailleurs: dans une feuille Google Sheets, sur une application web, dans un bot Discord...
|
|
20
|
-
<br><br>
|
|
21
|
-
Vous trouverez plus d'informations dans <a href="https://metamob.fr/aide/api">la page d'aide</a>.
|
|
22
|
-
<br><br>
|
|
23
|
-
<span style="background-color: DarkRed;">Utiliser une clé API requiert des connaissances en développement. Si vous ne savez pas ce qu'est une API ni comment l'utiliser, ce n'est pas la peine de créer une clé.<br>
|
|
24
|
-
Les clés API sont automatiquement supprimées au bout de 90 jours sans utilisation.</span>
|
|
25
|
-
<br>
|
|
26
|
-
<br>
|
|
27
|
-
<h3> 🗝️Récupérer une clé </h3>
|
|
28
|
-
Pour créer votre clé, rendez-vous dans <a href="https://metamob.fr/utilisateur/mon_profil">votre espace</a> et cliquez sur l'onglet "API".
|
|
29
|
-
Vous devrez saisir un nom. Gardez à l'esprit que vous ne pouvez créer qu'une seule clé API pour l'instant.<br>
|
|
30
|
-
<b>Votre clé sera immédiatement utilisable.</b>
|
|
31
|
-
<br>
|
|
32
|
-
<h2>✨Installation</h2>
|
|
33
14
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
<
|
|
37
|
-
|
|
15
|
+
# 🔥 @ix-xs/metamob.api
|
|
16
|
+
|
|
17
|
+
<div align="center">
|
|
18
|
+
|
|
19
|
+

|
|
20
|
+

|
|
21
|
+

|
|
22
|
+

|
|
23
|
+
|
|
24
|
+
**🚀 SDK JavaScript officieux pour l'API Metamob - Dofus 🐉**
|
|
25
|
+
|
|
26
|
+
*Une librairie performante pour interagir avec l'écosystème Dofus via Metamob*
|
|
27
|
+
|
|
28
|
+
[](https://www.npmjs.com/package/@ix-xs/metamob.api)
|
|
29
|
+
[](https://www.npmjs.com/package/@ix-xs/metamob.api)
|
|
30
|
+
[](https://github.com/ix-xs/metamob.api/blob/main/LICENSE)
|
|
31
|
+
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 🌟 Aperçu
|
|
37
|
+
|
|
38
|
+
**@ix-xs/metamob.api** est un SDK JavaScript moderne et puissant conçu spécialement pour l'API Metamob, permettant aux développeurs de créer facilement des applications Dofus avec une intégration fluide et performante.
|
|
39
|
+
|
|
40
|
+
### ✨ Fonctionnalités principales
|
|
41
|
+
|
|
42
|
+
- 🔥 **Cache intelligent** avec synchronisation automatique disque/mémoire
|
|
43
|
+
- ⚡ **Performances optimales** grâce à un système de cache avancé
|
|
44
|
+
- 🛡️ **Sécurité renforcée** avec écriture atomique des fichiers
|
|
45
|
+
- 🎯 **API moderne** avec support complet TypeScript (jsdoc)
|
|
46
|
+
- 📖 **Documentation complète** avec exemples pratiques
|
|
47
|
+
- 🔄 **Rate limiting** automatique avec retry intelligent
|
|
48
|
+
- 🌐 **Support complet** de toutes les endpoints Metamob
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 🚀 Installation rapide
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# NPM
|
|
56
|
+
npm install @ix-xs/metamob.api
|
|
38
57
|
|
|
39
|
-
|
|
40
|
-
|
|
58
|
+
# Yarn
|
|
59
|
+
yarn add @ix-xs/metamob.api
|
|
41
60
|
|
|
42
|
-
|
|
61
|
+
# PNPM
|
|
62
|
+
pnpm add @ix-xs/metamob.api
|
|
43
63
|
```
|
|
44
64
|
|
|
45
|
-
|
|
65
|
+
### 📋 Prérequis
|
|
46
66
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
67
|
+
- **Node.js** >= 18.0.0
|
|
68
|
+
- **NPM** >= 8.0.0
|
|
69
|
+
- Une clé API Metamob valide
|
|
50
70
|
|
|
51
|
-
|
|
52
|
-
| --- | --- | --- |
|
|
53
|
-
| `getUser()` | `username`:string; | Récupère les informations d'un utilisateur. Non sensible à la casse. |
|
|
54
|
-
| `getUserMonsters()` | `username`:string;<br>{<br>`type?`:string;<br>`monstre?`:string;<br>`etape?`:string;<br>`quantite?`:string;<br>`etat?`:string;<br>} | Récupère les monstres d'un utilisateur. Le nom d'utilisateur n'est pas sensible à la casse. |
|
|
55
|
-
| `getMonsters()` | {<br>`monstre?`:string;<br>`etape?`:string;<br>`type?`:string;<br>} | Récupère les monstres. |
|
|
56
|
-
| `getServers()` | `server?`:string; | Récupère les serveurs. |
|
|
57
|
-
| `getKralamoures()` | {<br>`serveur?`:string;<br>`date_debut?`:string;<br>`date_fin?`:string;<br>} | Récupère les kralamoures. |
|
|
58
|
-
| `getZones()` | `zone?`:string; | Récupère les zones. |
|
|
59
|
-
| `getSouszones()` | `souszone?`:string; | Récupère les sous-zones. |
|
|
60
|
-
| `putUserMonsters()` | `username`:string<br>`uniqueId`:string<br>`body`:Array<{<br>`monstre`:string;<br>`quantite?`:string;<br>`etat?`:string;<br>}> | Met à jour les informations de monstre d'un compte utilisateur.<br>Le champ quantite indique l'opération à effectuer sur la quantité:<br>• Si la quantité renseigner commence par "===", la quantité du monstre sera forcée à cette valeur.<br>• Si la quantité renseigner commence par "+", la quantité du monstre sera incrémenter de cette valeur<br>• Si la quantité renseigner commence par "-", la quantité du monstre sera décrémenter de cette valeur |
|
|
61
|
-
| `resetUserMonsters()` | `username`:string;<br>`uniqueId`:string; | Réinitialise les monstres sur le compte. Cela signifie que toutes les informations relatives aux monstres seront supprimées !<br>Les monstres seront mis à l'état aucun (ni recherché ni proposé), avec une quantité nulle (0). |
|
|
71
|
+
---
|
|
62
72
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
73
|
+
## 💡 Utilisation de base
|
|
74
|
+
|
|
75
|
+
```javascript
|
|
76
|
+
const metamobAPI = require("@ix-xs/metamob.api");
|
|
77
|
+
const client = new metamobAPI("VOTRE_CLÉ_API_METAMOB");
|
|
66
78
|
|
|
79
|
+
// Utilisation du cache (recommandé)
|
|
80
|
+
console.log(client.cache.servers); // Serveurs en cache
|
|
81
|
+
console.log(client.cache.monsters); // Monstres en cache
|
|
82
|
+
console.log(client.cache.areas); // Zones en cache
|
|
67
83
|
|
|
68
|
-
|
|
69
|
-
const
|
|
84
|
+
// Ou récupération via API
|
|
85
|
+
const servers = await client.getServers();
|
|
86
|
+
const user = await client.getUser("Ix-xs");
|
|
87
|
+
const monsters = await client.getUserMonsters("Ix-xs");
|
|
88
|
+
```
|
|
70
89
|
|
|
71
|
-
|
|
90
|
+
---
|
|
72
91
|
|
|
73
|
-
|
|
74
|
-
client.getUser("popop").then(console.log);
|
|
92
|
+
## 🏗️ Architecture du cache
|
|
75
93
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
94
|
+
### 🧠 Cache intelligent multicouche
|
|
95
|
+
|
|
96
|
+
Notre système de cache combine :
|
|
97
|
+
|
|
98
|
+
- **📁 Cache disque** : Persistance des données via JSON
|
|
99
|
+
- **💾 Cache mémoire** : Accès ultra-rapide via `require()`
|
|
100
|
+
- **🔄 Synchronisation automatique** : Mise à jour seamless
|
|
101
|
+
- **🛡️ Écriture atomique** : Prévention de la corruption des données
|
|
102
|
+
|
|
103
|
+
```javascript
|
|
104
|
+
// Le cache est automatiquement synchronisé
|
|
105
|
+
await client.getServers(); // Met à jour le cache si nécessaire
|
|
106
|
+
|
|
107
|
+
// Accès instantané depuis le cache mémoire
|
|
108
|
+
const servers = client.cache.servers;
|
|
109
|
+
```
|
|
80
110
|
|
|
81
|
-
|
|
82
|
-
client.getMonsters().then(console.log);
|
|
83
|
-
// Renvoie la liste de tous les archimonstres
|
|
84
|
-
client.getMonsters({ type:"archimonstre" }).then(console.log);
|
|
111
|
+
### 📊 Types de cache disponibles
|
|
85
112
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
113
|
+
| Type | Description | Endpoint |
|
|
114
|
+
|------|-------------|----------|
|
|
115
|
+
| `servers` | Serveurs Dofus | `/serveurs` |
|
|
116
|
+
| `monsters` | Base de données des monstres | `/monstres` |
|
|
117
|
+
| `areas` | Zones de jeu | `/zones` |
|
|
118
|
+
| `subareas` | Sous-zones détaillées | `/sous-zones` |
|
|
90
119
|
|
|
91
|
-
|
|
92
|
-
client.getKralamoures().then(console.log);
|
|
93
|
-
// Renvoie la liste des ouvertures prévues entre la date du jour et le 01 juin 2024 sur le serveur Tylezia
|
|
94
|
-
client.getKralamoures({ serveur:"Tylezia", date_fin:"2023-06-01" }).then(console.log);
|
|
120
|
+
---
|
|
95
121
|
|
|
96
|
-
|
|
97
|
-
client.getZones().then(console.log);
|
|
98
|
-
// Renvoie les informations sur la zone Amakna
|
|
99
|
-
client.getZones("Amakna").then(console.log);
|
|
122
|
+
## 🔧 API complète
|
|
100
123
|
|
|
101
|
-
|
|
102
|
-
client.getSouszones().then(console.log);
|
|
103
|
-
// Renvoie les informations sur la sous-zones Aerdala
|
|
104
|
-
client.getSouszones("Aerdala").then(console.log);
|
|
124
|
+
### 👤 Gestion des utilisateurs
|
|
105
125
|
|
|
106
|
-
|
|
107
|
-
//
|
|
108
|
-
|
|
109
|
-
client.putUserMonsters("nom_utilisateur", "id_unique_utilisateur", [
|
|
110
|
-
{ monstre:"Arakne", quantite:"+5", etat:"propose" },
|
|
111
|
-
{ monstre:"Larchimaide la Poussée", quantite:"===3" },
|
|
112
|
-
{ monstre:"Bouftou Royal", quantite:"-2" },
|
|
113
|
-
]).then(console.log);
|
|
126
|
+
```javascript
|
|
127
|
+
// Informations utilisateur
|
|
128
|
+
const user = await client.getUser("pseudo");
|
|
114
129
|
|
|
115
|
-
//
|
|
116
|
-
client.
|
|
130
|
+
// Monstres d'un utilisateur
|
|
131
|
+
const userMonsters = await client.getUserMonsters("pseudo");
|
|
132
|
+
|
|
133
|
+
// Mise à jour des monstres
|
|
134
|
+
await client.setUserMonsters("pseudo", "unique_id", [
|
|
135
|
+
{ monstre: "Arakne", etat: "recherche", quantite: 5 },
|
|
136
|
+
{ monstre: "Boufton Blanc", etat: "propose", quantite: 2 }
|
|
137
|
+
]);
|
|
138
|
+
|
|
139
|
+
// Réinitialisation des monstres
|
|
140
|
+
await client.resetUserMonsters("pseudo", "unique_id");
|
|
117
141
|
```
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
142
|
+
|
|
143
|
+
### 🎮 Données de jeu
|
|
144
|
+
|
|
145
|
+
```javascript
|
|
146
|
+
// Cache instantané (recommandé)
|
|
147
|
+
const servers = client.cache.servers;
|
|
148
|
+
const monsters = client.cache.monsters;
|
|
149
|
+
const areas = client.cache.areas;
|
|
150
|
+
const subareas = client.cache.subareas;
|
|
151
|
+
|
|
152
|
+
// Ou via API avec mise à jour du cache
|
|
153
|
+
const freshServers = await client.getServers();
|
|
154
|
+
const freshMonsters = await client.getMonsters();
|
|
155
|
+
const freshAreas = await client.getAreas();
|
|
156
|
+
const freshSubareas = await client.getSubareas();
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### 🐙 Kralamoures
|
|
160
|
+
|
|
161
|
+
```javascript
|
|
162
|
+
// Toutes les ouvertures kralamoures
|
|
163
|
+
const kralamoures = await client.getKralamoures();
|
|
164
|
+
|
|
165
|
+
// Avec filtres
|
|
166
|
+
const filtered = await client.getKralamoures({
|
|
167
|
+
server: "Salar",
|
|
168
|
+
start_date: "2025-01-01",
|
|
169
|
+
end_date: "2025-12-31"
|
|
170
|
+
});
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
### 📊 Structure de réponse
|
|
176
|
+
|
|
177
|
+
Toutes les méthodes retournent un objet standardisé :
|
|
178
|
+
|
|
179
|
+
```javascript
|
|
180
|
+
{
|
|
181
|
+
ok: boolean, // Succès de la requête
|
|
182
|
+
status: number, // Code de statut HTTP
|
|
183
|
+
statusText: string, // Message de statut
|
|
184
|
+
retryAfter?: number, // Délai avant retry (si 429)
|
|
185
|
+
errors?: string[], // Erreurs éventuelles
|
|
186
|
+
data?: any // Données de réponse
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## ⚡ Optimisations avancées
|
|
193
|
+
|
|
194
|
+
### 🚀 Cache Strategy
|
|
195
|
+
|
|
196
|
+
```javascript
|
|
197
|
+
// Préférez toujours le cache pour les données statiques
|
|
198
|
+
const servers = client.cache.servers; // ✅ Instantané
|
|
199
|
+
const servers = await client.getServers(); // ❌ Plus lent
|
|
200
|
+
|
|
201
|
+
// Le cache se met à jour automatiquement si nécessaire
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### 🔄 Rate Limiting
|
|
205
|
+
|
|
206
|
+
Le SDK gère automatiquement :
|
|
207
|
+
- **Détection du rate limiting** (429)
|
|
208
|
+
- **Retry automatique** avec backoff
|
|
209
|
+
- **Headers de retry** respectés
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## 🛠️ Configuration avancée
|
|
214
|
+
|
|
215
|
+
### 📁 Structure des fichiers cache
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
.cache/
|
|
219
|
+
├── $.js # Index des caches
|
|
220
|
+
├── servers.json # Serveurs
|
|
221
|
+
├── monsters.json # Monstres
|
|
222
|
+
├── areas.json # Zones
|
|
223
|
+
└── subareas.json # Sous-zones
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### 🔧 Personnalisation
|
|
227
|
+
|
|
228
|
+
Le cache utilise :
|
|
229
|
+
- **write-file-atomic** pour l'écriture sécurisée
|
|
230
|
+
- **Formatage JSON** avec indentation (4 espaces)
|
|
231
|
+
- **Rechargement automatique** du cache Node.js
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## 🏆 Contributeurs & Support
|
|
236
|
+
|
|
237
|
+
<div align="center">
|
|
238
|
+
|
|
239
|
+
### 👨💻 Créateur
|
|
240
|
+
|
|
241
|
+
<img src="https://cdn.discordapp.com/avatars/782307250751406091/a_3f71f1ac5e1664038fdf33c2c408482e.gif" style="border-radius:0.5rem; width:5rem; height:auto">
|
|
242
|
+
|
|
243
|
+
**Ix-xs**
|
|
244
|
+
*Développeur auto-didacte & Passionné Dofus*
|
|
245
|
+
|
|
246
|
+
[](https://discord.gg/user/ix-xs)
|
|
247
|
+
[](https://github.com/ix-xs)
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
### 💬 Besoin d'aide ?
|
|
252
|
+
|
|
253
|
+
- 🐛 **Issues** : [GitHub Issues](https://github.com/ix-xs/metamob.api/issues)
|
|
254
|
+
- 💬 **Discord** : `Ix-xs` - Contact direct
|
|
255
|
+
|
|
256
|
+
</div>
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
<div align="center">
|
|
261
|
+
|
|
262
|
+
**🌟 Si ce projet vous aide, n'hésitez pas à lui donner une étoile !**
|
|
263
|
+
|
|
264
|
+
[](https://github.com/ix-xs/metamob.api/stargazers)
|
|
265
|
+
|
|
266
|
+
*Développé avec ❤️ pour la communauté Dofus*
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
**⚡ Propulsé par l'API Metamob | Optimisé pour la performance | Conçu pour les développeurs**
|
|
271
|
+
|
|
272
|
+
</div>
|