22
33import fr .sandro642 .github .ConnectLib ;
44import fr .sandro642 .github .enums .lang .CategoriesType ;
5+ import fr .sandro642 .github .spring .controller .DataController ;
6+ import fr .sandro642 .github .spring .dto .Request ;
57import org .springframework .web .reactive .function .client .WebClient ;
68import reactor .core .publisher .Mono ;
79import reactor .core .scheduler .Schedulers ;
@@ -44,13 +46,19 @@ public class ApiClient extends ApiFactory {
4446 */
4547 private final ApiFactory apiFactory = new ApiFactory ();
4648
49+ /**
50+ * baseUrl is a static string that holds the base URL for the API.
51+ * It is initialized in the constructor and used for making requests.
52+ */
53+ private static String baseUrl ;
54+
4755 /**
4856 * Constructor for ApiClient.
4957 * It initializes the WebClient with the base URL from the ConnectLib configuration.
5058 * If the base URL is not found, it throws a RuntimeException.
5159 */
5260 public ApiClient (String baseUrlLambda ) {
53- String baseUrl = baseUrlLambda ;
61+ baseUrl = baseUrlLambda ;
5462
5563 if (baseUrl == null ) {
5664 connectLib .Logger ().CRITICAL (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "construct.urlbase" ));
@@ -69,6 +77,8 @@ public ApiClient(String baseUrlLambda) {
6977 public Mono <ApiFactory > callAPIGet (String routeName ) {
7078 connectLib .Logger ().INFO (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "call.get" , Map .of ("routename" , routeName )));
7179
80+ Request r = DataController .getInstance ().createRequest (routeName , baseUrl );
81+
7282 record ResponseData (int statusCode , String body ) {}
7383
7484 return webClient .get ()
@@ -80,6 +90,13 @@ record ResponseData(int statusCode, String body) {}
8090 .subscribeOn (Schedulers .boundedElastic ())
8191 .doOnNext (responseData -> {
8292 connectLib .Logger ().INFO (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "call.threadinuse" , "thread" , Thread .currentThread ().getName ()));
93+
94+ String newStatus = (responseData .statusCode () >= 200 && responseData .statusCode () < 300 ) ? "success" : "error" ;
95+ try {
96+ DataController .getInstance ().updateRequestStatus (r .getId (), newStatus );
97+ } catch (Exception e ) {
98+ connectLib .Logger ().CRITICAL (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "general.error" , Map .of ("method" , "GET" , "exception" , e .getMessage ())));
99+ }
83100 })
84101 .map (responseData -> {
85102 apiFactory .setStatusCode (responseData .statusCode ());
@@ -99,6 +116,8 @@ record ResponseData(int statusCode, String body) {}
99116 public Mono <ApiFactory > callAPIPost (String routeName , Map <String , Object > body ) {
100117 connectLib .Logger ().INFO (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "call.post" , Map .of ("routename" , routeName )));
101118
119+ Request r = DataController .getInstance ().createRequest (routeName , baseUrl );
120+
102121 record ResponseData (int statusCode , String body ) {}
103122
104123 return webClient .post ()
@@ -111,6 +130,13 @@ record ResponseData(int statusCode, String body) {}
111130 .subscribeOn (Schedulers .boundedElastic ())
112131 .doOnNext (responseData -> {
113132 connectLib .Logger ().INFO (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "call.threadinuse" , "thread" , Thread .currentThread ().getName ()));
133+
134+ String newStatus = (responseData .statusCode () >= 200 && responseData .statusCode () < 300 ) ? "success" : "error" ;
135+ try {
136+ DataController .getInstance ().updateRequestStatus (r .getId (), newStatus );
137+ } catch (Exception e ) {
138+ connectLib .Logger ().CRITICAL (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "general.error" , Map .of ("method" , "GET" , "exception" , e .getMessage ())));
139+ }
114140 })
115141 .map (responseData -> {
116142 apiFactory .setStatusCode (responseData .statusCode ());
@@ -130,6 +156,8 @@ record ResponseData(int statusCode, String body) {}
130156 public Mono <ApiFactory > callAPIPut (String routeName , Map <String , Object > body ) {
131157 connectLib .Logger ().INFO (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "call.put" , Map .of ("routename" , routeName )));
132158
159+ Request r = DataController .getInstance ().createRequest (routeName , baseUrl );
160+
133161 record ResponseData (int statusCode , String body ) {}
134162
135163 return webClient .put ()
@@ -142,6 +170,13 @@ record ResponseData(int statusCode, String body) {}
142170 .subscribeOn (Schedulers .boundedElastic ())
143171 .doOnNext (responseData -> {
144172 connectLib .Logger ().INFO (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "call.threadinuse" , "thread" , Thread .currentThread ().getName ()));
173+
174+ String newStatus = (responseData .statusCode () >= 200 && responseData .statusCode () < 300 ) ? "success" : "error" ;
175+ try {
176+ DataController .getInstance ().updateRequestStatus (r .getId (), newStatus );
177+ } catch (Exception e ) {
178+ connectLib .Logger ().CRITICAL (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "general.error" , Map .of ("method" , "GET" , "exception" , e .getMessage ())));
179+ }
145180 })
146181 .map (responseData -> {
147182 apiFactory .setStatusCode (responseData .statusCode ());
@@ -161,6 +196,8 @@ record ResponseData(int statusCode, String body) {}
161196 public Mono <ApiFactory > callAPIPatch (String routeName , Map <String , Object > body ) {
162197 connectLib .Logger ().INFO (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "call.patch" , Map .of ("routename" , routeName )));
163198
199+ Request r = DataController .getInstance ().createRequest (routeName , baseUrl );
200+
164201 record ResponseData (int statusCode , String body ) {}
165202
166203 return webClient .patch ()
@@ -173,6 +210,13 @@ record ResponseData(int statusCode, String body) {}
173210 .subscribeOn (Schedulers .boundedElastic ())
174211 .doOnNext (responseData -> {
175212 connectLib .Logger ().INFO (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "call.threadinuse" , "thread" , Thread .currentThread ().getName ()));
213+
214+ String newStatus = (responseData .statusCode () >= 200 && responseData .statusCode () < 300 ) ? "success" : "error" ;
215+ try {
216+ DataController .getInstance ().updateRequestStatus (r .getId (), newStatus );
217+ } catch (Exception e ) {
218+ connectLib .Logger ().CRITICAL (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "general.error" , Map .of ("method" , "GET" , "exception" , e .getMessage ())));
219+ }
176220 })
177221 .map (responseData -> {
178222 apiFactory .setStatusCode (responseData .statusCode ());
@@ -191,6 +235,8 @@ record ResponseData(int statusCode, String body) {}
191235 public Mono <ApiFactory > callAPIDelete (String routeName ) {
192236 connectLib .Logger ().INFO (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "call.delete" , Map .of ("routename" , routeName )));
193237
238+ Request r = DataController .getInstance ().createRequest (routeName , baseUrl );
239+
194240 record ResponseData (int statusCode , String body ) {}
195241
196242 return webClient .delete ()
@@ -202,6 +248,13 @@ record ResponseData(int statusCode, String body) {}
202248 .subscribeOn (Schedulers .boundedElastic ())
203249 .doOnNext (responseData -> {
204250 connectLib .Logger ().INFO (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "call.threadinuse" , "thread" , Thread .currentThread ().getName ()));
251+
252+ String newStatus = (responseData .statusCode () >= 200 && responseData .statusCode () < 300 ) ? "success" : "error" ;
253+ try {
254+ DataController .getInstance ().updateRequestStatus (r .getId (), newStatus );
255+ } catch (Exception e ) {
256+ connectLib .Logger ().CRITICAL (connectLib .LangManager ().getMessage (CategoriesType .APICLIENT_CLASS , "general.error" , Map .of ("method" , "GET" , "exception" , e .getMessage ())));
257+ }
205258 })
206259 .map (responseData -> {
207260 apiFactory .setStatusCode (responseData .statusCode ());
0 commit comments