Skip to content

Commit d51ea8a

Browse files
committed
Fix webhooks when sending with auth
1 parent deb8b6b commit d51ea8a

2 files changed

Lines changed: 32 additions & 7 deletions

File tree

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,6 @@ build/
3838
.DS_Store
3939

4040
### Minecraft Test Server ###
41-
/src/test/resources/minecraft-test-server/*
41+
/src/test/resources/minecraft-test-server/*
42+
43+
test-server

src/main/java/com/shweit/serverapi/webhooks/RegisterWebHooks.java

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,31 @@ 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")
169+
URI uri = URI.create(url);
170+
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
171+
.uri(uri)
172+
.header("Content-Type", "application/json");
173+
174+
// Check for Basic Authentication in URL
175+
String userInfo = uri.getUserInfo();
176+
if (userInfo != null && userInfo.contains(":")) {
177+
// Extract username and password from URL
178+
String[] credentials = userInfo.split(":", 2);
179+
String username = credentials[0];
180+
String password = credentials[1];
181+
182+
// Create Basic Auth header
183+
String auth = username + ":" + password;
184+
String encodedAuth = java.util.Base64.getEncoder().encodeToString(auth.getBytes());
185+
requestBuilder.header("Authorization", "Basic " + encodedAuth);
186+
187+
// Rebuild URI without auth info
188+
String cleanUrl = url.replaceFirst(userInfo + "@", "");
189+
uri = URI.create(cleanUrl);
190+
requestBuilder.uri(uri);
191+
}
192+
193+
HttpRequest request = requestBuilder
172194
.POST(HttpRequest.BodyPublishers.ofString(jsonObject.toString()))
173195
.build();
174196

@@ -178,15 +200,16 @@ private static void sendWebHook(final String url, final JSONObject jsonObject) {
178200
if (httpResponse.statusCode() == 200) {
179201
Logger.debug("WebHook '" + jsonObject.get("event") + "' erfolgreich an " + url + "gesendet");
180202
} else {
181-
Logger.warning("Fehler beim Senden des WebHooks '" + jsonObject.get("event") + "' an " + url + ". Antwortcode: " + httpResponse.statusCode());
203+
Logger.warning("Error while sending webhook event '" + jsonObject.get("event") + "' to " + url + ". Responde Code: " + httpResponse.statusCode());
204+
Logger.warning(httpResponse.body());
182205
}
183206
}).exceptionally(e -> {
184-
Logger.error("Fehler beim Senden des WebHooks " + jsonObject.get("event") + " an " + url + ": " + e.getMessage());
207+
Logger.error("Error while sending webhook event " + jsonObject.get("event") + " to " + url + ": " + e.getMessage());
185208
return null;
186209
});
187210

188211
} catch (Exception e) {
189-
Logger.error("Fehler beim Senden des WebHooks " + jsonObject.get("event") + " an " + url + ": " + e.getMessage());
212+
Logger.error("Error while sending webhook event " + jsonObject.get("event") + " to " + url + ": " + e.getMessage());
190213
}
191214
}
192215

0 commit comments

Comments
 (0)