Add UI to punishments page

This commit is contained in:
Telesphoreo 2022-04-12 17:39:16 -05:00
parent 52a4264192
commit a229e8f470
3 changed files with 95 additions and 34 deletions

View File

@ -35,6 +35,7 @@ public class HTTPDModule extends PlexModule
@Override @Override
public void load() public void load()
{ {
//moduleConfig = new ModuleConfig(this, this.getClass().getClassLoader().getResource("settings.yml").getFile());
moduleConfig = new ModuleConfig(this, "settings.yml"); moduleConfig = new ModuleConfig(this, "settings.yml");
} }

View File

@ -11,6 +11,9 @@ import dev.plex.request.GetMapping;
import dev.plex.util.PlexLog; import dev.plex.util.PlexLog;
import dev.plex.util.adapter.LocalDateTimeSerializer; import dev.plex.util.adapter.LocalDateTimeSerializer;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
@ -29,16 +32,62 @@ public class PunishmentsEndpoint extends AbstractServlet
} }
if (request.getPathInfo() == null) if (request.getPathInfo() == null)
{ {
return "Please specify the UUID of the player you would like to check.\nExample: /api/punishments/<uuid>"; /*StringBuilder contentBuilder = new StringBuilder();
} PlexLog.log(this.getClass().getClassLoader().getResource("punishments.html").getPath());
try try
{ {
UUID uuid = UUID.fromString(request.getPathInfo().replace("/", "")); BufferedReader in = new BufferedReader(new FileReader(this.getClass().getClassLoader().getResource("punishments.html").getFile().replace("!", "")));
final PlexPlayer punishedPlayer = DataUtils.getPlayer(uuid); String str;
while ((str = in.readLine()) != null)
{
contentBuilder.append(str);
}
in.close();
}
catch (IOException ignored)
{
}
return contentBuilder.toString();*/
return """
<!DOCTYPE html>
<body>
<div style="text-align: center;">
<h2 style="font-family:Helvetica">Enter the UUID or username of the player you want to check</h2>
<input id="test" type="text" autofocus>
<button type="button" onclick="redirect()">Submit</button>
<script>
function redirect() {
var url = document.getElementById('test').value
window.location = "punishments/" + url
}
</script>
</div>
</body>
</html>""";
}
UUID pathUUID;
String pathPlexPlayer;
PlexPlayer punishedPlayer;
try
{
pathUUID = UUID.fromString(request.getPathInfo().replace("/", ""));
punishedPlayer = DataUtils.getPlayer(pathUUID);
}
catch (java.lang.IllegalArgumentException ignored)
{
pathPlexPlayer = request.getPathInfo().replace("/", "");
punishedPlayer = DataUtils.getPlayer(pathPlexPlayer);
}
final PlexPlayer player = DataUtils.getPlayerByIP(ipAddress); final PlexPlayer player = DataUtils.getPlayerByIP(ipAddress);
if (punishedPlayer == null)
{
return "This player has never joined the server before.";
}
if (punishedPlayer.getPunishments().isEmpty()) if (punishedPlayer.getPunishments().isEmpty())
{ {
return "This player has been a good boy. They have no punishments! Or they've never been on the server before. Take your pick."; return "This player has been a good boy. They have no punishments!";
} }
if (player == null) if (player == null)
{ {
@ -66,9 +115,4 @@ public class PunishmentsEndpoint extends AbstractServlet
} }
return new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer()).setPrettyPrinting().create().toJson(punishedPlayer.getPunishments().stream().toList()); return new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer()).setPrettyPrinting().create().toJson(punishedPlayer.getPunishments().stream().toList());
} }
catch (java.lang.IllegalArgumentException ignored)
{
return "Invalid UUID";
}
}
} }

View File

@ -0,0 +1,16 @@
<!DOCTYPE html>
<body>
<div style="text-align: center;">
<h2 style="font-family:Helvetica">Enter the UUID or username of the player you want to check</h2>
<input id="test" type="text" autofocus>
<button type="button" onclick="redirect()">Submit</button>
<script>
function redirect() {
var url = document.getElementById('test').value
window.location = "punishments/" + url
}
</script>
</div>
</body>
</html>