11package net .nitrado .hytale .plugins .query ;
22
3+ import com .hypixel .hytale .server .core .plugin .JavaPlugin ;
34import jakarta .servlet .http .HttpServlet ;
45import jakarta .servlet .http .HttpServletRequest ;
56import jakarta .servlet .http .HttpServletResponse ;
7+ import net .nitrado .hytale .plugins .webserver .WebServerPlugin ;
68import net .nitrado .hytale .plugins .webserver .authentication .HytaleUserPrincipal ;
79import net .nitrado .hytale .plugins .webserver .authorization .RequirePermissions ;
10+ import net .nitrado .hytale .plugins .webserver .servlets .TemplateServlet ;
811import net .nitrado .hytale .plugins .webserver .util .RequestUtils ;
912import org .bson .json .JsonWriterSettings ;
1013import org .thymeleaf .TemplateEngine ;
1316
1417import java .io .IOException ;
1518import java .net .InetSocketAddress ;
19+ import java .util .HashMap ;
1620
17- public class QueryServlet extends HttpServlet {
21+ public class QueryServlet extends TemplateServlet {
1822
1923 private static final String JSON_V1 = "application/x.hytale.nitrado.query+json;version=1" ;
2024 private static final String TEXT_HTML = "text/html" ;
@@ -23,7 +27,9 @@ public class QueryServlet extends HttpServlet {
2327 private TemplateEngine templateEngine ;
2428 private InetSocketAddress publicAddress ;
2529
26- public QueryServlet (TemplateEngine templateEngine , InetSocketAddress publicAddress ) {
30+ public QueryServlet (WebServerPlugin parentPlugin , JavaPlugin thisPlugin , TemplateEngine templateEngine , InetSocketAddress publicAddress ) {
31+ super (parentPlugin , thisPlugin );
32+
2733 this .templateEngine = templateEngine ;
2834 this .publicAddress = publicAddress ;
2935 }
@@ -51,8 +57,8 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp)
5157
5258 var contentType = RequestUtils .negotiateContentType (
5359 req ,
54- JSON_V1
55- // TEXT_HTML
60+ JSON_V1 ,
61+ TEXT_HTML
5662 );
5763
5864 if (contentType == null ) {
@@ -71,15 +77,19 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp)
7177 }
7278
7379 private void handleHtml (HttpServletRequest req , HttpServletResponse resp ) throws IOException {
80+ resp .setCharacterEncoding ("UTF-8" );
7481 resp .setContentType (TEXT_HTML );
7582
76- var exchange = getWebApplication ().buildExchange (req , resp );
77- var thymeleafContext = new WebContext (exchange );
83+ var response = buildQueryResponse (req );
84+
85+ var vars = new HashMap <String , Object >();
86+ vars .put ("response" , response );
7887
79- this .templateEngine . process ( "nitrado.query" , thymeleafContext , resp . getWriter () );
88+ this .renderTemplate ( req , resp , "nitrado.query" , vars );
8089 }
8190
8291 protected void handleJsonV1 (HttpServletRequest req , HttpServletResponse resp ) throws IOException {
92+ resp .setCharacterEncoding ("UTF-8" );
8393 resp .setContentType (JSON_V1 );
8494
8595 var response = buildQueryResponse (req );
0 commit comments