Skip to content

Commit 039a134

Browse files
authored
Merge branch 'main' into feature/schematic
2 parents 1606a61 + aee8d5a commit 039a134

4 files changed

Lines changed: 94 additions & 34 deletions

File tree

readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ Changelog :
3333
```java
3434
- [0.1.3.9-SNAPSHOT] : Ajout de la sérialisation des données pour une compatibilisation parfaite des données avec les HOOK.
3535
- [0.1.3.17-SNAPSHOT] : Suppresion de la sérialisation des données... Toujours disponible depuis la branche /feature/serializer. Utile si les processus ne sont pas initialisé dans le même environnement.
36+
- [0.1.9.2-STABLE] : Patch de sécurité en utilisant la méthode getRoutes en utilisant une classe enumération pour la routeName : StackOverflowError... + Création des maps selon le type de variable souhaité.
3637
```
3738

3839
---

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public ApiClient() {
4848
* Méthode pour appeler l'API avec une requête GET.
4949
*
5050
* @param routeName c'est le nom de la route à appeler.
51-
* @return la réponse de l'API encapsulée dans un Mono<ApiResponse>.
51+
* @return la réponse de l'API encapsulée.
5252
*/
5353
public Mono<ApiFactory> callAPIGet(String routeName) {
5454
logger.INFO("Appel GET vers: " + routeName);
@@ -72,7 +72,7 @@ public Mono<ApiFactory> callAPIGet(String routeName) {
7272
* @param routeName Nom de la route à appeler.
7373
* @param body Corps de la requête (peut être null pour une requête sans
7474
* corps).
75-
* @return la réponse de l'API encapsulée dans un Mono<ApiResponse>.
75+
* @return la réponse de l'API encapsulée.
7676
*/
7777
public Mono<ApiFactory> callAPIPost(String routeName, Map<String, Object> body) {
7878
logger.INFO("Appel POST vers: " + routeName);
@@ -95,7 +95,7 @@ public Mono<ApiFactory> callAPIPost(String routeName, Map<String, Object> body)
9595
*
9696
* @param routeName Nom de la route à appeler.
9797
* @param body Corps de la requête (peut être null pour une requête sans corps).
98-
* @return la réponse de l'API encapsulée dans un Mono<ApiResponse>.
98+
* @return la réponse de l'API encapsulée.
9999
*/
100100
public Mono<ApiFactory> callAPIPut(String routeName, Map<String, Object> body) {
101101
logger.INFO("Appel PUT vers: " + routeName);
@@ -118,7 +118,7 @@ public Mono<ApiFactory> callAPIPut(String routeName, Map<String, Object> body) {
118118
*
119119
* @param routeName Nom de la route à appeler.
120120
* @param body Corps de la requête (peut être null pour une requête sans corps).
121-
* @return la réponse de l'API encapsulée dans un Mono<ApiResponse>.
121+
* @return la réponse de l'API encapsulée.
122122
*/
123123
public Mono<ApiFactory> callAPIPatch(String routeName, Map<String, Object> body) {
124124
logger.INFO("Appel PATCH vers: " + routeName);
@@ -140,7 +140,7 @@ public Mono<ApiFactory> callAPIPatch(String routeName, Map<String, Object> body)
140140
* Méthode pour appeler l'API avec une requête DELETE
141141
*
142142
* @param routeName Nom de la route à appeler.
143-
* @return la réponse de l'API encapsulée dans un Mono<ApiResponse>.
143+
* @return la réponse de l'API encapsulée.
144144
*/
145145
public Mono<ApiFactory> callAPIDelete(String routeName) {
146146
logger.INFO("Appel DELETE vers: " + routeName);

src/main/java/fr/sandro642/github/jobs/JobGetInfos.java

Lines changed: 73 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,13 @@ public JobGetInfos() {
3333
ConnectorAPI.YamlUtils();
3434
}
3535

36-
private String getRouteName(Enum<?> routeName) {
37-
return routeName.name().toLowerCase();
38-
}
3936
/**
40-
* Récupère les routes depuis le fichier YAML et construit l'URL complète
41-
* @param versionType Version de l'API (V1_BRANCH, V2_BRANCH)
42-
* @param methodType Type de méthode HTTP (GET, POST)
43-
* @param routeName Nom de la route dans le fichier YAML
44-
* @param body Corps de la requête pour POST (peut être null pour GET)
45-
* @param params Paramètres supplémentaires pour la requête (optionnel)
46-
* @return JobGetInfos pour chaînage
37+
* Méthode utilitaire pour obtenir le nom de la route en minuscules.
38+
* @param routeName Nom de la route (Enum)
39+
* @return Nom de la route en minuscules
4740
*/
48-
public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Enum<?> routeName, Map<String, Object> body, Map<String, Object> params) {
49-
return getRoutes(versionType, methodType, routeName, body, params);
41+
private String getRouteName(Enum<?> routeName) {
42+
return routeName.name().toLowerCase();
5043
}
5144

5245
/**
@@ -56,7 +49,7 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Enu
5649
* @param routeName Nom de la route dans le fichier YAML
5750
* @return JobGetInfos pour chaînage
5851
*/
59-
public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Enum<?> routeName, Map<String, Object> body) {
52+
public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Enum<?> routeName, Map<String, ?> body) {
6053
return getRoutes(versionType, methodType, getRouteName(routeName), body, null);
6154
}
6255

@@ -88,7 +81,7 @@ public JobGetInfos getRoutes(MethodType methodType, Enum<?> routeName) {
8881
* @param body Corps de la requête pour POST (peut être null pour GET)
8982
* @return JobGetInfos pour chaînage
9083
*/
91-
public JobGetInfos getRoutes(MethodType methodType, Enum<?> routeName, Map<String, Object> body) {
84+
public JobGetInfos getRoutes(MethodType methodType, Enum<?> routeName, Map<String, ?> body) {
9285
return getRoutes(null, methodType, getRouteName(routeName), body, null);
9386
}
9487

@@ -99,7 +92,7 @@ public JobGetInfos getRoutes(MethodType methodType, Enum<?> routeName, Map<Strin
9992
* @param params Paramètres supplémentaires pour la requête
10093
* @return JobGetInfos pour chaînage
10194
*/
102-
public JobGetInfos getRoutes(MethodType methodType, Enum<?> routeName, Map<String, Object> body, Map<String, Object> params) {
95+
public JobGetInfos getRoutes(MethodType methodType, Enum<?> routeName, Map<String, ?> body, Map<String, ?> params) {
10396
return getRoutes(null, methodType, getRouteName(routeName), body, params);
10497
}
10598

@@ -120,7 +113,7 @@ public JobGetInfos getRoutes(MethodType methodType, String routeName) {
120113
* @param body Corps de la requête pour POST (peut être null pour GET)
121114
* @return JobGetInfos pour chaînage
122115
*/
123-
public JobGetInfos getRoutesWithBody(MethodType methodType, String routeName, Map<String, Object> body) {
116+
public JobGetInfos getRoutesWithBody(MethodType methodType, String routeName, Map<String, ?> body) {
124117
return getRoutes(null, methodType, routeName, body, null);
125118
}
126119

@@ -131,7 +124,7 @@ public JobGetInfos getRoutesWithBody(MethodType methodType, String routeName, Ma
131124
* @param params Paramètres supplémentaires pour la requête
132125
* @return JobGetInfos pour chaînage
133126
*/
134-
public JobGetInfos getRoutesWithParams(MethodType methodType, String routeName, Map<String, Object> params) {
127+
public JobGetInfos getRoutesWithParams(MethodType methodType, String routeName, Map<String, ?> params) {
135128
return getRoutes(null, methodType, routeName, null, params);
136129
}
137130

@@ -143,7 +136,7 @@ public JobGetInfos getRoutesWithParams(MethodType methodType, String routeName,
143136
* @param params Paramètres supplémentaires pour la requête
144137
* @return JobGetInfos pour chaînage
145138
*/
146-
public JobGetInfos getRoutesBoth(MethodType methodType, String routeName, Map<String, Object> body, Map<String, Object> params) {
139+
public JobGetInfos getRoutesBoth(MethodType methodType, String routeName, Map<String, ?> body, Map<String, ?> params) {
147140
return getRoutes(null, methodType, routeName, body, params);
148141
}
149142

@@ -166,7 +159,7 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str
166159
* @param body Corps de la requête pour POST (peut être null pour GET)
167160
* @return JobGetInfos pour chaînage
168161
*/
169-
public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, String routeName, Map<String, Object> body) {
162+
public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, String routeName, Map<String, ?> body) {
170163
return getRoutes(versionType, methodType, routeName, body, null);
171164
}
172165

@@ -179,7 +172,66 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str
179172
* @param params Paramètres supplémentaires pour la requête (optionnel)
180173
* @return JobGetInfos pour chaînage
181174
*/
182-
public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, String routeName, Map<String, Object> body, Map<String, Object> params) {
175+
public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, String routeName, Map<String, ?> body, Map<String, ?> params) {
176+
try {
177+
// Récupère la route depuis le fichier YAML
178+
String route = ConnectorAPI.getRoute(routeName);
179+
180+
String fullRoute;
181+
182+
// Vérification de null pour éviter NullPointerException
183+
if (versionType != null && versionType.getVersion() != null) {
184+
// Construit l'URL complète avec la version
185+
fullRoute = "/" + versionType.getVersion() + route;
186+
} else {
187+
// Construit l'URL complète sans version
188+
fullRoute = route;
189+
}
190+
191+
// Remplace les paramètres dans la route si présents
192+
if (params != null && !params.isEmpty()) {
193+
for (Map.Entry<String, ?> entry : params.entrySet()) {
194+
String paramKey = "{" + entry.getKey() + "}";
195+
String paramValue = entry.getValue().toString();
196+
197+
// Remplace toutes les occurrences du paramètre dans la route
198+
fullRoute = fullRoute.replace(paramKey, paramValue);
199+
}
200+
}
201+
202+
// Stocke les informations pour la requête
203+
ConnectorAPI.StoreAndRetrieve().store.put("currentRoute", fullRoute);
204+
ConnectorAPI.StoreAndRetrieve().store.put("currentMethod", methodType);
205+
206+
if (body != null) {
207+
ConnectorAPI.StoreAndRetrieve().store.put("currentBody", body);
208+
}
209+
210+
// Stocke les paramètres si présents
211+
if (params != null) {
212+
ConnectorAPI.StoreAndRetrieve().store.put("currentParams", params);
213+
}
214+
215+
ConnectorAPI.Logger().INFO("Route construite: " + fullRoute);
216+
217+
} catch (Exception e) {
218+
ConnectorAPI.Logger().ERROR("Erreur lors de la construction de la route: " + e.getMessage());
219+
throw new RuntimeException("Erreur lors de la construction de la route", e);
220+
}
221+
222+
return this;
223+
}
224+
225+
/**
226+
* Récupère les routes depuis le fichier YAML et construit l'URL complète
227+
* @param versionType Version de l'API (V1_BRANCH, V2_BRANCH)
228+
* @param methodType Type de méthode HTTP (GET, POST)
229+
* @param routeName Nom de la route dans le fichier YAML
230+
* @param body Corps de la requête pour POST (peut être null pour GET)
231+
* @param params Paramètres supplémentaires pour la requête (optionnel)
232+
* @return JobGetInfos pour chaînage
233+
*/
234+
public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Enum<?> routeName, Map<String, ?> body, Map<String, ?> params) {
183235
try {
184236
// Récupère la route depuis le fichier YAML
185237
String route = ConnectorAPI.getRoute(routeName);
@@ -197,7 +249,7 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str
197249

198250
// Remplace les paramètres dans la route si présents
199251
if (params != null && !params.isEmpty()) {
200-
for (Map.Entry<String, Object> entry : params.entrySet()) {
252+
for (Map.Entry<String, ?> entry : params.entrySet()) {
201253
String paramKey = "{" + entry.getKey() + "}";
202254
String paramValue = entry.getValue().toString();
203255

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

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import fr.sandro642.github.utils.ConvertEnum;
1010
import org.junit.jupiter.api.Test;
1111

12+
import java.util.Map;
13+
1214
/**
1315
* Main est une classe de test pour vérifier la création du fichier YML et pleins d'autres fonctionnalités de la librairie.
1416
* @author Sandro642
@@ -20,7 +22,8 @@ public class MainTest {
2022

2123
public enum TestRoutes implements ConvertEnum.RouteImport {
2224
VERSION("/api/mcas/info/version"),
23-
INFO("/api/mcas/info/info");
25+
INFO("/api/mcas/info/info"),
26+
UNIX("/api/auth/link/unix/{sessionId}");
2427

2528
final String route;
2629

@@ -72,20 +75,24 @@ public static void main(String[] args) {
7275

7376

7477
@Test
75-
public void testGetExtraData() {
76-
ConnectorAPI.initialize(ResourceType.TEST_RESOURCES);
78+
public void FullObjectTest() {
79+
ConnectorAPI.initialize(ResourceType.TEST_RESOURCES, TestRoutes.class);
7780

7881
try {
7982
ApiFactory response = ConnectorAPI.JobGetInfos()
8083
.getRoutes(VersionType.V1_BRANCH, MethodType.GET, "example")
8184
.getResponse();
85+
86+
Map<String, Boolean> body = Map.of("status", true);
8287

83-
System.out.println("Data: " + response);
8488

85-
} catch (Exception e) {
86-
System.err.println("Erreur lors de l'appel API: " + e.getMessage());
87-
e.printStackTrace();
88-
}
89+
Map<String, String> params = Map.of("sessionId", "0233-xgt-7113");
90+
91+
ApiResponse response = ConnectorAPI.JobGetInfos()
92+
.getRoutes(VersionType.V1_BRANCH, MethodType.POST, TestRoutes.UNIX, body, params)
93+
.getResponse();
94+
95+
System.out.println(response.display());
8996
}
9097

9198
}

0 commit comments

Comments
 (0)