Skip to content

Commit 6cd98de

Browse files
committed
Add: enhance ApiResponse with extra data handling and deprecate getSpecData method
1 parent 502ec31 commit 6cd98de

2 files changed

Lines changed: 68 additions & 4 deletions

File tree

src/main/java/fr/sandro642/github/api/ApiResponse.java

Lines changed: 57 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package fr.sandro642.github.api;
22

3+
import java.util.HashMap;
34
import java.util.Map;
45

56
/**
@@ -16,14 +17,18 @@ public class ApiResponse<T> {
1617
* msg : Message d'erreur ou de succès.
1718
* code : Code de statut de la réponse (par exemple, HTTP status code).
1819
* data : Données spécifiques de la réponse, stockées dans une Map.
20+
* extra : Champs supplémentaires qui ne font pas partie des champs standard.
1921
*/
2022
private boolean err;
2123
private String msg;
2224
private int code;
2325
private Map<String, Object> data;
26+
private Map<String, Object> extra;
2427

2528
// Constructeurs
26-
public ApiResponse() {}
29+
public ApiResponse() {
30+
this.extra = new HashMap<>();
31+
}
2732

2833
/**
2934
* Constructeur pour initialiser la réponse d'API avec des valeurs spécifiques.
@@ -37,6 +42,7 @@ public ApiResponse(boolean err, String msg, int code, Map<String, Object> data)
3742
this.msg = msg;
3843
this.code = code;
3944
this.data = data;
45+
this.extra = new HashMap<>();
4046
}
4147

4248
/**
@@ -105,9 +111,15 @@ public void setData(Map<String, Object> data) {
105111

106112
/**
107113
* Récupère une donnée spécifique à partir de la Map 'data' en utilisant une clé.
114+
* @deprecated En raison de la nature générique de cette méthode créant des erreurs, il est recommandé d'utiliser les méthodes spécifiques pour chaque type de données. Cette méthode est obsolète et peut être supprimée dans les futures versions.
115+
* @see #getSpecDataBoolean(String key)
116+
* @see #getSpecDataDouble(String key)
117+
* @see #getSpecDataString(String key)
118+
* @see #getSpecDataInteger (String key)
108119
* @param key La clé pour accéder à la donnée.
109120
* @return La valeur associée à la clé dans la Map 'data'.
110121
*/
122+
@Deprecated
111123
public Object getSpecData(String key) {
112124
if (data == null) {
113125
throw new RuntimeException("Le champ 'data' est null.");
@@ -187,17 +199,58 @@ public Integer getSpecDataInteger(String key) {
187199
}
188200
}
189201

202+
/**
203+
* Récupère une donnée supplémentaire à partir de la Map 'extra' en utilisant une clé.
204+
* Cette méthode permet d'accéder à des champs qui ne font pas partie des champs standard (err, msg, code, data).
205+
* @param key La clé pour accéder à la donnée supplémentaire.
206+
* @return La valeur associée à la clé dans la Map 'extra', ou null si la clé n'existe pas.
207+
*/
208+
public Object getExtra(String key) {
209+
if (extra == null) {
210+
return null;
211+
}
212+
return extra.get(key);
213+
}
214+
215+
/**
216+
* Définit une donnée supplémentaire dans la Map 'extra'.
217+
* @param key La clé pour la donnée supplémentaire.
218+
* @param value La valeur à associer à la clé.
219+
*/
220+
public void setExtra(String key, Object value) {
221+
if (extra == null) {
222+
extra = new HashMap<>();
223+
}
224+
extra.put(key, value);
225+
}
226+
227+
/**
228+
* Récupère toutes les données supplémentaires.
229+
* @return La Map contenant toutes les données supplémentaires.
230+
*/
231+
public Map<String, Object> getExtraData() {
232+
return extra;
233+
}
234+
235+
/**
236+
* Définit toutes les données supplémentaires.
237+
* @param extra La Map contenant les données supplémentaires.
238+
*/
239+
public void setExtraData(Map<String, Object> extra) {
240+
this.extra = extra;
241+
}
242+
190243
/**
191244
* Récupère une donnée spécifique à partir de la Map 'data' en utilisant une clé et la convertit en type Long.
192245
* @return La valeur associée à la clé dans la Map 'data', convertie en Long.
193246
*/
194-
@Override
195-
public String toString() {
247+
public String display() {
196248
return "ApiResponse{" +
197249
"err=" + err +
198250
", msg='" + msg + '\'' +
199251
", code=" + code +
200252
", data=" + data +
253+
", extra=" + extra +
201254
'}';
202255
}
203-
}
256+
}

src/test/java/fr/sandro642/github/test/Main.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,15 @@ public static void main(String[] args) {
5959
}
6060
}
6161

62+
@Test
63+
public void testHorsData() {
64+
ConnectorAPI.initialize(ResourceType.TEST_RESOURCES);
65+
66+
ApiResponse<Void> response = ConnectorAPI.JobGetInfos()
67+
.getRoutes(VersionType.V1_BRANCH, MethodType.GET, "example1")
68+
.getResponse();
69+
70+
System.out.println(response.display());
71+
}
72+
6273
}

0 commit comments

Comments
 (0)