@@ -166,10 +166,45 @@ public static void sendToAllUrls(final JSONObject jsonObject) {
166166
167167 private static void sendWebHook (final String url , final JSONObject jsonObject ) {
168168 try {
169- HttpRequest request = HttpRequest .newBuilder ()
170- .uri (URI .create (url ))
171- .header ("Content-Type" , "application/json" )
172- .POST (HttpRequest .BodyPublishers .ofString (jsonObject .toString ()))
169+ URI uri = URI .create (url );
170+ HttpRequest .Builder requestBuilder = HttpRequest .newBuilder ()
171+ .uri (uri );
172+
173+ // Check for Basic Authentication in URL
174+ String userInfo = uri .getUserInfo ();
175+ if (userInfo != null && userInfo .contains (":" )) {
176+ // Extract username and password from URL
177+ String [] credentials = userInfo .split (":" , 2 );
178+ String username = credentials [0 ];
179+ String password = credentials [1 ];
180+
181+ // Create Basic Auth header
182+ String auth = username + ":" + password ;
183+ String encodedAuth = java .util .Base64 .getEncoder ().encodeToString (auth .getBytes ());
184+ requestBuilder .header ("Authorization" , "Basic " + encodedAuth );
185+
186+ // Rebuild URI without auth info
187+ String cleanUrl = url .replaceFirst (userInfo + "@" , "" );
188+ uri = URI .create (cleanUrl );
189+ requestBuilder .uri (uri );
190+ }
191+
192+ // Check if only message should be sent
193+ boolean onlyMessage = MinecraftServerAPI .config .getBoolean ("webhooks.onlyMessage" , false );
194+ String bodyContent ;
195+
196+ if (onlyMessage && jsonObject .has ("message" )) {
197+ // Send only the message content as plain text
198+ bodyContent = jsonObject .getString ("message" );
199+ requestBuilder .header ("Content-Type" , "text/plain; charset=UTF-8" );
200+ } else {
201+ // Send full JSON object
202+ bodyContent = jsonObject .toString ();
203+ requestBuilder .header ("Content-Type" , "application/json" );
204+ }
205+
206+ HttpRequest request = requestBuilder
207+ .POST (HttpRequest .BodyPublishers .ofString (bodyContent ))
173208 .build ();
174209
175210 CompletableFuture <HttpResponse <String >> response = HTTP_CLIENT .sendAsync (request , HttpResponse .BodyHandlers .ofString ());
@@ -178,15 +213,16 @@ private static void sendWebHook(final String url, final JSONObject jsonObject) {
178213 if (httpResponse .statusCode () == 200 ) {
179214 Logger .debug ("WebHook '" + jsonObject .get ("event" ) + "' erfolgreich an " + url + "gesendet" );
180215 } else {
181- Logger .warning ("Fehler beim Senden des WebHooks '" + jsonObject .get ("event" ) + "' an " + url + ". Antwortcode: " + httpResponse .statusCode ());
216+ Logger .warning ("Error while sending webhook event '" + jsonObject .get ("event" ) + "' to " + url + ". Responde Code: " + httpResponse .statusCode ());
217+ Logger .warning (httpResponse .body ());
182218 }
183219 }).exceptionally (e -> {
184- Logger .error ("Fehler beim Senden des WebHooks " + jsonObject .get ("event" ) + " an " + url + ": " + e .getMessage ());
220+ Logger .error ("Error while sending webhook event " + jsonObject .get ("event" ) + " to " + url + ": " + e .getMessage ());
185221 return null ;
186222 });
187223
188224 } catch (Exception e ) {
189- Logger .error ("Fehler beim Senden des WebHooks " + jsonObject .get ("event" ) + " an " + url + ": " + e .getMessage ());
225+ Logger .error ("Error while sending webhook event " + jsonObject .get ("event" ) + " to " + url + ": " + e .getMessage ());
190226 }
191227 }
192228
0 commit comments