currently i have a half abstracted system that looks like this:
registerPathHandler("/v1/lobbies/advertise", "POST", (bytes, requestURI, query, path, discordData) -> {
AuthDetails authDetails = getAuthDetails(bytes);
if (authDetails == null) {
return Response.error("403 Forbidden", 403);
} else {
String s = new String(bytes);
JsonObject object = new Gson().fromJson(s, JsonObject.class);
NewAdInfoObj adInfoObj;
try {
adInfoObj = NewAdInfoObj.CODEC.parse(JsonOps.INSTANCE, object).resultOrPartial(System.err::println).orElseThrow();
} catch (Throwable t) {
return Response.error("Bad request", 400);
}
String ipAddress = adInfoObj.ip();
if (ipAddress.matches("^((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4}$")) {
return Lobbies.advertiseServer(authDetails.uuid(), ipAddress, adInfoObj.port(), adInfoObj.minecraftVersion(), adInfoObj.minimegaVersion(), adInfoObj.minecraftProtocolVersion(), adInfoObj.minimegaProtocolVersion(), adInfoObj.legacy4j(), adInfoObj._public(), adInfoObj.minigame(), adInfoObj.mode(), adInfoObj.playersOnline(), adInfoObj.maxPlayers());
} else {
return Response.error("Malformed IP address", 400);
}
}
});
registerPathHandler("/v1/playable", "POST", (bytes, requestURI, query, path, discordData) -> {
String s = new String(bytes);
try {
int i = Integer.parseInt(s);
// 53 -> 0.0.1-alpha.17.3
// 54 -> 0.0.1-alpha.17.4
// 55 -> 0.0.1-alpha.17.5
// 56 -> unreleased version
// 57 -> unreleased version
return Response.jsonSuccess(new SupportedObj(i == 53 || i == 54 || i == 55 || i == 56 || i == 57));
} catch (NumberFormatException e) {
return Response.error("Malformed protocol version", 400);
}
});
registerPathHandler("/v1/auth/player-info", "POST", (bytes, requestURI, query, path, discordData) -> {
AuthDetails authDetails = getAuthDetails(bytes);
if (authDetails == null) {
return Response.error("403 Forbidden", 403);
} else {
String s = new String(bytes);
JsonObject object = new Gson().fromJson(s, JsonObject.class);
C2SPlayerInfoObj playerInfoObj;
try {
playerInfoObj = C2SPlayerInfoObj.CODEC.parse(JsonOps.INSTANCE, object).resultOrPartial(System.err::println).orElseThrow();
} catch (Throwable t) {
return Response.error("Bad request", 400);
}
return Authentication.fetchPlayerInfo(playerInfoObj.uuid());
}
});
how hard would it be to switch to using spring? I am also doing authentication as part of the request body