mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-02-01 21:11:23 +01:00
Rename: Page/JSONHandler -> Page/JSONResolver
Reasoning: 'Handler' does not give extra information to the reader. 'Resolver' tells something is being decided/found answer to or resolution is found (Response in this case) - Comments related to Response Handlers were updated. - One missed Response in ResponseResolver now built using ResponseFactory
This commit is contained in:
parent
887c8d4f4c
commit
b2cd332c9b
@ -19,7 +19,7 @@ package com.djrapitops.plan.delivery.export;
|
|||||||
import com.djrapitops.plan.delivery.rendering.pages.Page;
|
import com.djrapitops.plan.delivery.rendering.pages.Page;
|
||||||
import com.djrapitops.plan.delivery.rendering.pages.PageFactory;
|
import com.djrapitops.plan.delivery.rendering.pages.PageFactory;
|
||||||
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
||||||
import com.djrapitops.plan.delivery.webserver.pages.json.RootJSONHandler;
|
import com.djrapitops.plan.delivery.webserver.pages.json.RootJSONResolver;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.Response;
|
import com.djrapitops.plan.delivery.webserver.response.Response;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.errors.ErrorResponse;
|
import com.djrapitops.plan.delivery.webserver.response.errors.ErrorResponse;
|
||||||
import com.djrapitops.plan.exceptions.ParseException;
|
import com.djrapitops.plan.exceptions.ParseException;
|
||||||
@ -51,7 +51,7 @@ public class NetworkPageExporter extends FileExporter {
|
|||||||
private final PlanFiles files;
|
private final PlanFiles files;
|
||||||
private final DBSystem dbSystem;
|
private final DBSystem dbSystem;
|
||||||
private final PageFactory pageFactory;
|
private final PageFactory pageFactory;
|
||||||
private final RootJSONHandler jsonHandler;
|
private final RootJSONResolver jsonHandler;
|
||||||
private final Locale locale;
|
private final Locale locale;
|
||||||
private final Theme theme;
|
private final Theme theme;
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ public class NetworkPageExporter extends FileExporter {
|
|||||||
PlanFiles files,
|
PlanFiles files,
|
||||||
DBSystem dbSystem,
|
DBSystem dbSystem,
|
||||||
PageFactory pageFactory,
|
PageFactory pageFactory,
|
||||||
RootJSONHandler jsonHandler,
|
RootJSONResolver jsonHandler,
|
||||||
Locale locale,
|
Locale locale,
|
||||||
Theme theme
|
Theme theme
|
||||||
) {
|
) {
|
||||||
@ -141,7 +141,7 @@ public class NetworkPageExporter extends FileExporter {
|
|||||||
|
|
||||||
private Response getJSONResponse(String resource) {
|
private Response getJSONResponse(String resource) {
|
||||||
try {
|
try {
|
||||||
return jsonHandler.getResponse(null, new RequestTarget(URI.create(resource)));
|
return jsonHandler.resolve(null, new RequestTarget(URI.create(resource)));
|
||||||
} catch (WebException e) {
|
} catch (WebException e) {
|
||||||
// The rest of the exceptions should not be thrown
|
// The rest of the exceptions should not be thrown
|
||||||
throw new IllegalStateException("Unexpected exception thrown: " + e.toString(), e);
|
throw new IllegalStateException("Unexpected exception thrown: " + e.toString(), e);
|
||||||
|
@ -19,7 +19,7 @@ package com.djrapitops.plan.delivery.export;
|
|||||||
import com.djrapitops.plan.delivery.rendering.pages.Page;
|
import com.djrapitops.plan.delivery.rendering.pages.Page;
|
||||||
import com.djrapitops.plan.delivery.rendering.pages.PageFactory;
|
import com.djrapitops.plan.delivery.rendering.pages.PageFactory;
|
||||||
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
||||||
import com.djrapitops.plan.delivery.webserver.pages.json.RootJSONHandler;
|
import com.djrapitops.plan.delivery.webserver.pages.json.RootJSONResolver;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.Response;
|
import com.djrapitops.plan.delivery.webserver.response.Response;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.errors.ErrorResponse;
|
import com.djrapitops.plan.delivery.webserver.response.errors.ErrorResponse;
|
||||||
import com.djrapitops.plan.exceptions.ParseException;
|
import com.djrapitops.plan.exceptions.ParseException;
|
||||||
@ -52,7 +52,7 @@ public class PlayerPageExporter extends FileExporter {
|
|||||||
private final PlanFiles files;
|
private final PlanFiles files;
|
||||||
private final DBSystem dbSystem;
|
private final DBSystem dbSystem;
|
||||||
private final PageFactory pageFactory;
|
private final PageFactory pageFactory;
|
||||||
private final RootJSONHandler jsonHandler;
|
private final RootJSONResolver jsonHandler;
|
||||||
private final Locale locale;
|
private final Locale locale;
|
||||||
private final Theme theme;
|
private final Theme theme;
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ public class PlayerPageExporter extends FileExporter {
|
|||||||
PlanFiles files,
|
PlanFiles files,
|
||||||
DBSystem dbSystem,
|
DBSystem dbSystem,
|
||||||
PageFactory pageFactory,
|
PageFactory pageFactory,
|
||||||
RootJSONHandler jsonHandler,
|
RootJSONResolver jsonHandler,
|
||||||
Locale locale,
|
Locale locale,
|
||||||
Theme theme
|
Theme theme
|
||||||
) {
|
) {
|
||||||
@ -124,7 +124,7 @@ public class PlayerPageExporter extends FileExporter {
|
|||||||
|
|
||||||
private Response getJSONResponse(String resource) {
|
private Response getJSONResponse(String resource) {
|
||||||
try {
|
try {
|
||||||
return jsonHandler.getResponse(null, new RequestTarget(URI.create(resource)));
|
return jsonHandler.resolve(null, new RequestTarget(URI.create(resource)));
|
||||||
} catch (WebException e) {
|
} catch (WebException e) {
|
||||||
// The rest of the exceptions should not be thrown
|
// The rest of the exceptions should not be thrown
|
||||||
throw new IllegalStateException("Unexpected exception thrown: " + e.toString(), e);
|
throw new IllegalStateException("Unexpected exception thrown: " + e.toString(), e);
|
||||||
|
@ -19,7 +19,7 @@ package com.djrapitops.plan.delivery.export;
|
|||||||
import com.djrapitops.plan.delivery.rendering.pages.Page;
|
import com.djrapitops.plan.delivery.rendering.pages.Page;
|
||||||
import com.djrapitops.plan.delivery.rendering.pages.PageFactory;
|
import com.djrapitops.plan.delivery.rendering.pages.PageFactory;
|
||||||
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
||||||
import com.djrapitops.plan.delivery.webserver.pages.json.RootJSONHandler;
|
import com.djrapitops.plan.delivery.webserver.pages.json.RootJSONResolver;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.Response;
|
import com.djrapitops.plan.delivery.webserver.response.Response;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.errors.ErrorResponse;
|
import com.djrapitops.plan.delivery.webserver.response.errors.ErrorResponse;
|
||||||
import com.djrapitops.plan.exceptions.ParseException;
|
import com.djrapitops.plan.exceptions.ParseException;
|
||||||
@ -51,7 +51,7 @@ public class PlayersPageExporter extends FileExporter {
|
|||||||
private final PlanFiles files;
|
private final PlanFiles files;
|
||||||
private final DBSystem dbSystem;
|
private final DBSystem dbSystem;
|
||||||
private final PageFactory pageFactory;
|
private final PageFactory pageFactory;
|
||||||
private final RootJSONHandler jsonHandler;
|
private final RootJSONResolver jsonHandler;
|
||||||
private final Locale locale;
|
private final Locale locale;
|
||||||
private final Theme theme;
|
private final Theme theme;
|
||||||
private final ServerInfo serverInfo;
|
private final ServerInfo serverInfo;
|
||||||
@ -63,7 +63,7 @@ public class PlayersPageExporter extends FileExporter {
|
|||||||
PlanFiles files,
|
PlanFiles files,
|
||||||
DBSystem dbSystem,
|
DBSystem dbSystem,
|
||||||
PageFactory pageFactory,
|
PageFactory pageFactory,
|
||||||
RootJSONHandler jsonHandler,
|
RootJSONResolver jsonHandler,
|
||||||
Locale locale,
|
Locale locale,
|
||||||
Theme theme,
|
Theme theme,
|
||||||
ServerInfo serverInfo
|
ServerInfo serverInfo
|
||||||
@ -119,7 +119,7 @@ public class PlayersPageExporter extends FileExporter {
|
|||||||
|
|
||||||
private Response getJSONResponse(String resource) {
|
private Response getJSONResponse(String resource) {
|
||||||
try {
|
try {
|
||||||
return jsonHandler.getResponse(null, new RequestTarget(URI.create(resource)));
|
return jsonHandler.resolve(null, new RequestTarget(URI.create(resource)));
|
||||||
} catch (WebException e) {
|
} catch (WebException e) {
|
||||||
// The rest of the exceptions should not be thrown
|
// The rest of the exceptions should not be thrown
|
||||||
throw new IllegalStateException("Unexpected exception thrown: " + e.toString(), e);
|
throw new IllegalStateException("Unexpected exception thrown: " + e.toString(), e);
|
||||||
|
@ -19,7 +19,7 @@ package com.djrapitops.plan.delivery.export;
|
|||||||
import com.djrapitops.plan.delivery.rendering.pages.Page;
|
import com.djrapitops.plan.delivery.rendering.pages.Page;
|
||||||
import com.djrapitops.plan.delivery.rendering.pages.PageFactory;
|
import com.djrapitops.plan.delivery.rendering.pages.PageFactory;
|
||||||
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
||||||
import com.djrapitops.plan.delivery.webserver.pages.json.RootJSONHandler;
|
import com.djrapitops.plan.delivery.webserver.pages.json.RootJSONResolver;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.Response;
|
import com.djrapitops.plan.delivery.webserver.response.Response;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.errors.ErrorResponse;
|
import com.djrapitops.plan.delivery.webserver.response.errors.ErrorResponse;
|
||||||
import com.djrapitops.plan.exceptions.ParseException;
|
import com.djrapitops.plan.exceptions.ParseException;
|
||||||
@ -53,7 +53,7 @@ public class ServerPageExporter extends FileExporter {
|
|||||||
private final PlanFiles files;
|
private final PlanFiles files;
|
||||||
private final PageFactory pageFactory;
|
private final PageFactory pageFactory;
|
||||||
private final DBSystem dbSystem;
|
private final DBSystem dbSystem;
|
||||||
private final RootJSONHandler jsonHandler;
|
private final RootJSONResolver jsonHandler;
|
||||||
private final Locale locale;
|
private final Locale locale;
|
||||||
private final Theme theme;
|
private final Theme theme;
|
||||||
private final ServerInfo serverInfo;
|
private final ServerInfo serverInfo;
|
||||||
@ -65,7 +65,7 @@ public class ServerPageExporter extends FileExporter {
|
|||||||
PlanFiles files,
|
PlanFiles files,
|
||||||
PageFactory pageFactory,
|
PageFactory pageFactory,
|
||||||
DBSystem dbSystem,
|
DBSystem dbSystem,
|
||||||
RootJSONHandler jsonHandler,
|
RootJSONResolver jsonHandler,
|
||||||
Locale locale,
|
Locale locale,
|
||||||
Theme theme,
|
Theme theme,
|
||||||
ServerInfo serverInfo // To know if current server is a Proxy
|
ServerInfo serverInfo // To know if current server is a Proxy
|
||||||
@ -153,7 +153,7 @@ public class ServerPageExporter extends FileExporter {
|
|||||||
|
|
||||||
private Response getJSONResponse(String resource) {
|
private Response getJSONResponse(String resource) {
|
||||||
try {
|
try {
|
||||||
return jsonHandler.getResponse(null, new RequestTarget(URI.create(resource)));
|
return jsonHandler.resolve(null, new RequestTarget(URI.create(resource)));
|
||||||
} catch (WebException e) {
|
} catch (WebException e) {
|
||||||
// The rest of the exceptions should not be thrown
|
// The rest of the exceptions should not be thrown
|
||||||
throw new IllegalStateException("Unexpected exception thrown: " + e.toString(), e);
|
throw new IllegalStateException("Unexpected exception thrown: " + e.toString(), e);
|
||||||
|
@ -56,7 +56,7 @@ public class RequestHandler implements HttpHandler {
|
|||||||
private final PlanConfig config;
|
private final PlanConfig config;
|
||||||
private final Theme theme;
|
private final Theme theme;
|
||||||
private final DBSystem dbSystem;
|
private final DBSystem dbSystem;
|
||||||
private final ResponseHandler responseHandler;
|
private final ResponseResolver responseResolver;
|
||||||
private final ResponseFactory responseFactory;
|
private final ResponseFactory responseFactory;
|
||||||
private final PluginLogger logger;
|
private final PluginLogger logger;
|
||||||
private final ErrorHandler errorHandler;
|
private final ErrorHandler errorHandler;
|
||||||
@ -71,7 +71,7 @@ public class RequestHandler implements HttpHandler {
|
|||||||
PlanConfig config,
|
PlanConfig config,
|
||||||
Theme theme,
|
Theme theme,
|
||||||
DBSystem dbSystem,
|
DBSystem dbSystem,
|
||||||
ResponseHandler responseHandler,
|
ResponseResolver responseResolver,
|
||||||
ResponseFactory responseFactory,
|
ResponseFactory responseFactory,
|
||||||
PluginLogger logger,
|
PluginLogger logger,
|
||||||
ErrorHandler errorHandler
|
ErrorHandler errorHandler
|
||||||
@ -80,7 +80,7 @@ public class RequestHandler implements HttpHandler {
|
|||||||
this.config = config;
|
this.config = config;
|
||||||
this.theme = theme;
|
this.theme = theme;
|
||||||
this.dbSystem = dbSystem;
|
this.dbSystem = dbSystem;
|
||||||
this.responseHandler = responseHandler;
|
this.responseResolver = responseResolver;
|
||||||
this.responseFactory = responseFactory;
|
this.responseFactory = responseFactory;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.errorHandler = errorHandler;
|
this.errorHandler = errorHandler;
|
||||||
@ -96,7 +96,7 @@ public class RequestHandler implements HttpHandler {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
Response response = shouldPreventRequest(request.getRemoteAddress()) // Forbidden response (Optional)
|
Response response = shouldPreventRequest(request.getRemoteAddress()) // Forbidden response (Optional)
|
||||||
.orElse(responseHandler.getResponse(request)); // Or the actual requested response
|
.orElse(responseResolver.getResponse(request)); // Or the actual requested response
|
||||||
|
|
||||||
// Increase attempt count and block if too high
|
// Increase attempt count and block if too high
|
||||||
Optional<Response> forbid = handlePasswordBruteForceAttempts(request, response);
|
Optional<Response> forbid = handlePasswordBruteForceAttempts(request, response);
|
||||||
@ -180,7 +180,7 @@ public class RequestHandler implements HttpHandler {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResponseHandler getResponseHandler() {
|
public ResponseResolver getResponseResolver() {
|
||||||
return responseHandler;
|
return responseResolver;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,10 +18,9 @@ package com.djrapitops.plan.delivery.webserver;
|
|||||||
|
|
||||||
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
||||||
import com.djrapitops.plan.delivery.webserver.pages.*;
|
import com.djrapitops.plan.delivery.webserver.pages.*;
|
||||||
import com.djrapitops.plan.delivery.webserver.pages.json.RootJSONHandler;
|
import com.djrapitops.plan.delivery.webserver.pages.json.RootJSONResolver;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.Response;
|
import com.djrapitops.plan.delivery.webserver.response.Response;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.ResponseFactory;
|
import com.djrapitops.plan.delivery.webserver.response.ResponseFactory;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.errors.BadRequestResponse;
|
|
||||||
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
||||||
import com.djrapitops.plan.exceptions.connection.BadRequestException;
|
import com.djrapitops.plan.exceptions.connection.BadRequestException;
|
||||||
import com.djrapitops.plan.exceptions.connection.ForbiddenException;
|
import com.djrapitops.plan.exceptions.connection.ForbiddenException;
|
||||||
@ -37,59 +36,62 @@ import javax.inject.Singleton;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles choosing of the correct response to a request.
|
* Resolves All URLs.
|
||||||
|
* <p>
|
||||||
|
* - Some URLs are resolved with other PageResolvers pointed at pages.
|
||||||
|
* - Some URLs point to resources that are resolved differently, those implementations are in this file.
|
||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
@Singleton
|
@Singleton
|
||||||
public class ResponseHandler extends TreePageHandler {
|
public class ResponseResolver extends CompositePageResolver {
|
||||||
|
|
||||||
private final DebugPageHandler debugPageHandler;
|
private final DebugPageResolver debugPageResolver;
|
||||||
private final PlayersPageHandler playersPageHandler;
|
private final PlayersPageResolver playersPageResolver;
|
||||||
private final PlayerPageHandler playerPageHandler;
|
private final PlayerPageResolver playerPageResolver;
|
||||||
private final ServerPageHandler serverPageHandler;
|
private final ServerPageResolver serverPageResolver;
|
||||||
private final RootJSONHandler rootJSONHandler;
|
private final RootJSONResolver rootJSONResolver;
|
||||||
private final ErrorHandler errorHandler;
|
private final ErrorHandler errorHandler;
|
||||||
|
|
||||||
private final ServerInfo serverInfo;
|
private final ServerInfo serverInfo;
|
||||||
private final Lazy<WebServer> webServer;
|
private final Lazy<WebServer> webServer;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public ResponseHandler(
|
public ResponseResolver(
|
||||||
ResponseFactory responseFactory,
|
ResponseFactory responseFactory,
|
||||||
Lazy<WebServer> webServer,
|
Lazy<WebServer> webServer,
|
||||||
ServerInfo serverInfo,
|
ServerInfo serverInfo,
|
||||||
|
|
||||||
DebugPageHandler debugPageHandler,
|
DebugPageResolver debugPageResolver,
|
||||||
PlayersPageHandler playersPageHandler,
|
PlayersPageResolver playersPageResolver,
|
||||||
PlayerPageHandler playerPageHandler,
|
PlayerPageResolver playerPageResolver,
|
||||||
ServerPageHandler serverPageHandler,
|
ServerPageResolver serverPageResolver,
|
||||||
RootJSONHandler rootJSONHandler,
|
RootJSONResolver rootJSONResolver,
|
||||||
|
|
||||||
ErrorHandler errorHandler
|
ErrorHandler errorHandler
|
||||||
) {
|
) {
|
||||||
super(responseFactory);
|
super(responseFactory);
|
||||||
this.webServer = webServer;
|
this.webServer = webServer;
|
||||||
this.serverInfo = serverInfo;
|
this.serverInfo = serverInfo;
|
||||||
this.debugPageHandler = debugPageHandler;
|
this.debugPageResolver = debugPageResolver;
|
||||||
this.playersPageHandler = playersPageHandler;
|
this.playersPageResolver = playersPageResolver;
|
||||||
this.playerPageHandler = playerPageHandler;
|
this.playerPageResolver = playerPageResolver;
|
||||||
this.serverPageHandler = serverPageHandler;
|
this.serverPageResolver = serverPageResolver;
|
||||||
this.rootJSONHandler = rootJSONHandler;
|
this.rootJSONResolver = rootJSONResolver;
|
||||||
this.errorHandler = errorHandler;
|
this.errorHandler = errorHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerPages() {
|
public void registerPages() {
|
||||||
registerPage("debug", debugPageHandler);
|
registerPage("debug", debugPageResolver);
|
||||||
registerPage("players", playersPageHandler);
|
registerPage("players", playersPageResolver);
|
||||||
registerPage("player", playerPageHandler);
|
registerPage("player", playerPageResolver);
|
||||||
|
|
||||||
registerPage("network", serverPageHandler);
|
registerPage("network", serverPageResolver);
|
||||||
registerPage("server", serverPageHandler);
|
registerPage("server", serverPageResolver);
|
||||||
|
|
||||||
registerPage("", new RootPageHandler(responseFactory, webServer.get(), serverInfo));
|
registerPage("", new RootPageResolver(responseFactory, webServer.get(), serverInfo));
|
||||||
|
|
||||||
registerPage("v1", rootJSONHandler);
|
registerPage("v1", rootJSONResolver);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Response getResponse(Request request) {
|
public Response getResponse(Request request) {
|
||||||
@ -102,7 +104,7 @@ public class ResponseHandler extends TreePageHandler {
|
|||||||
} catch (ForbiddenException e) {
|
} catch (ForbiddenException e) {
|
||||||
return responseFactory.forbidden403(e.getMessage());
|
return responseFactory.forbidden403(e.getMessage());
|
||||||
} catch (BadRequestException e) {
|
} catch (BadRequestException e) {
|
||||||
return new BadRequestResponse(e.getMessage() + " (when requesting '" + request.getTargetString() + "')");
|
return responseFactory.badRequest(e.getMessage(), request.getTargetString());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
errorHandler.log(L.ERROR, this.getClass(), e);
|
errorHandler.log(L.ERROR, this.getClass(), e);
|
||||||
return responseFactory.internalErrorResponse(e, request.getTargetString());
|
return responseFactory.internalErrorResponse(e, request.getTargetString());
|
||||||
@ -135,12 +137,12 @@ public class ResponseHandler extends TreePageHandler {
|
|||||||
return responseFactory.forbidden403();
|
return responseFactory.forbidden403();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PageHandler pageHandler = getPageHandler(target);
|
PageResolver pageResolver = getPageResolver(target);
|
||||||
if (pageHandler == null) {
|
if (pageResolver == null) {
|
||||||
return responseFactory.pageNotFound404();
|
return responseFactory.pageNotFound404();
|
||||||
} else {
|
} else {
|
||||||
if (!isAuthRequired || pageHandler.isAuthorized(authentication.get(), target)) {
|
if (!isAuthRequired || pageResolver.isAuthorized(authentication.get(), target)) {
|
||||||
return pageHandler.getResponse(request, target);
|
return pageResolver.resolve(request, target);
|
||||||
}
|
}
|
||||||
return responseFactory.forbidden403();
|
return responseFactory.forbidden403();
|
||||||
}
|
}
|
@ -111,7 +111,7 @@ public class WebServer implements SubSystem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
requestHandler.getResponseHandler().registerPages();
|
requestHandler.getResponseResolver().registerPages();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.delivery.webserver.cache;
|
package com.djrapitops.plan.delivery.webserver.cache;
|
||||||
|
|
||||||
|
import com.djrapitops.plan.delivery.webserver.pages.json.RootJSONResolver;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.Response;
|
import com.djrapitops.plan.delivery.webserver.response.Response;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
||||||
import com.djrapitops.plan.storage.file.ResourceCache;
|
import com.djrapitops.plan.storage.file.ResourceCache;
|
||||||
@ -32,7 +33,7 @@ import java.util.function.Supplier;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cache for any JSON data sent via {@link com.djrapitops.plan.delivery.webserver.pages.json.RootJSONHandler}.
|
* Cache for any JSON data sent via {@link RootJSONResolver}.
|
||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
|
@ -28,30 +28,35 @@ import java.util.HashMap;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract PageHandler that allows Tree-like target deduction.
|
* Extended {@link PageResolver} to implement layered resolution of addresses.
|
||||||
|
* <p>
|
||||||
|
* Allows resolving /example/foo and /example/bar with different PageResolvers as if the address being resolved
|
||||||
|
* was at the root of the address (/example/foo - FooPageResolver sees /foo).
|
||||||
|
* <p>
|
||||||
|
* Tree-like pattern for URL resolution.
|
||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
public abstract class TreePageHandler implements PageHandler {
|
public abstract class CompositePageResolver implements PageResolver {
|
||||||
|
|
||||||
protected final ResponseFactory responseFactory;
|
protected final ResponseFactory responseFactory;
|
||||||
|
|
||||||
private final Map<String, PageHandler> pages;
|
private final Map<String, PageResolver> pages;
|
||||||
|
|
||||||
public TreePageHandler(ResponseFactory responseFactory) {
|
public CompositePageResolver(ResponseFactory responseFactory) {
|
||||||
this.responseFactory = responseFactory;
|
this.responseFactory = responseFactory;
|
||||||
pages = new HashMap<>();
|
pages = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerPage(String targetPage, PageHandler handler) {
|
public void registerPage(String targetPage, PageResolver resolver) {
|
||||||
pages.put(targetPage, handler);
|
pages.put(targetPage, resolver);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerPage(String targetPage, PageHandler handler, int requiredPerm) {
|
public void registerPage(String targetPage, PageResolver resolver, int requiredPerm) {
|
||||||
pages.put(targetPage, new PageHandler() {
|
pages.put(targetPage, new PageResolver() {
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) throws WebException {
|
public Response resolve(Request request, RequestTarget target) throws WebException {
|
||||||
return handler.getResponse(request, target);
|
return resolver.resolve(request, target);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -60,10 +65,11 @@ public abstract class TreePageHandler implements PageHandler {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerPage(String targetPage, Response response, int requiredPerm) {
|
public void registerPage(String targetPage, Response response, int requiredPerm) {
|
||||||
pages.put(targetPage, new PageHandler() {
|
pages.put(targetPage, new PageResolver() {
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) {
|
public Response resolve(Request request, RequestTarget target) {
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,14 +81,14 @@ public abstract class TreePageHandler implements PageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) throws WebException {
|
public Response resolve(Request request, RequestTarget target) throws WebException {
|
||||||
PageHandler pageHandler = getPageHandler(target);
|
PageResolver pageResolver = getPageResolver(target);
|
||||||
return pageHandler != null
|
return pageResolver != null
|
||||||
? pageHandler.getResponse(request, target)
|
? pageResolver.resolve(request, target)
|
||||||
: responseFactory.pageNotFound404();
|
: responseFactory.pageNotFound404();
|
||||||
}
|
}
|
||||||
|
|
||||||
public PageHandler getPageHandler(RequestTarget target) {
|
public PageResolver getPageResolver(RequestTarget target) {
|
||||||
if (target.isEmpty()) {
|
if (target.isEmpty()) {
|
||||||
return pages.get("");
|
return pages.get("");
|
||||||
}
|
}
|
||||||
@ -91,7 +97,7 @@ public abstract class TreePageHandler implements PageHandler {
|
|||||||
return pages.get(targetPage);
|
return pages.get(targetPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PageHandler getPageHandler(String targetPage) {
|
public PageResolver getPageResolver(String targetPage) {
|
||||||
return pages.get(targetPage);
|
return pages.get(targetPage);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -28,22 +28,22 @@ import javax.inject.Inject;
|
|||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PageHandler for /debug page.
|
* Resolves /debug URL.
|
||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
@Singleton
|
@Singleton
|
||||||
public class DebugPageHandler implements PageHandler {
|
public class DebugPageResolver implements PageResolver {
|
||||||
|
|
||||||
private final ResponseFactory responseFactory;
|
private final ResponseFactory responseFactory;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public DebugPageHandler(ResponseFactory responseFactory) {
|
public DebugPageResolver(ResponseFactory responseFactory) {
|
||||||
this.responseFactory = responseFactory;
|
this.responseFactory = responseFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) {
|
public Response resolve(Request request, RequestTarget target) {
|
||||||
return responseFactory.debugPageResponse();
|
return responseFactory.debugPageResponse();
|
||||||
}
|
}
|
||||||
|
|
@ -24,20 +24,21 @@ import com.djrapitops.plan.exceptions.WebUserAuthException;
|
|||||||
import com.djrapitops.plan.exceptions.connection.WebException;
|
import com.djrapitops.plan.exceptions.connection.WebException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PageHandlers are used for easier Response management and authorization checking.
|
* Used for Response resolution and authorization.
|
||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
|
* @see CompositePageResolver for larger depth resolution than 1.
|
||||||
*/
|
*/
|
||||||
public interface PageHandler {
|
public interface PageResolver {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the Response of a PageHandler.
|
* Resolve the request to a response.
|
||||||
*
|
*
|
||||||
* @param request Request in case it is useful for choosing page.
|
* @param request Request in case it is useful for choosing page.
|
||||||
* @param target Rest of the target coordinates after this page has been solved.
|
* @param target Rest of the target coordinates after this page has been solved.
|
||||||
* @return Response appropriate to the PageHandler.
|
* @return Appropriate response.
|
||||||
*/
|
*/
|
||||||
Response getResponse(Request request, RequestTarget target) throws WebException;
|
Response resolve(Request request, RequestTarget target) throws WebException;
|
||||||
|
|
||||||
default boolean isAuthorized(Authentication auth, RequestTarget target) throws WebUserAuthException {
|
default boolean isAuthorized(Authentication auth, RequestTarget target) throws WebUserAuthException {
|
||||||
return true;
|
return true;
|
@ -34,19 +34,19 @@ import javax.inject.Singleton;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PageHandler for /player/PlayerName pages.
|
* Resolves /player/${name/uuid} URLs.
|
||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
@Singleton
|
@Singleton
|
||||||
public class PlayerPageHandler implements PageHandler {
|
public class PlayerPageResolver implements PageResolver {
|
||||||
|
|
||||||
private final ResponseFactory responseFactory;
|
private final ResponseFactory responseFactory;
|
||||||
private final DBSystem dbSystem;
|
private final DBSystem dbSystem;
|
||||||
private final UUIDUtility uuidUtility;
|
private final UUIDUtility uuidUtility;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public PlayerPageHandler(
|
public PlayerPageResolver(
|
||||||
ResponseFactory responseFactory,
|
ResponseFactory responseFactory,
|
||||||
DBSystem dbSystem,
|
DBSystem dbSystem,
|
||||||
UUIDUtility uuidUtility
|
UUIDUtility uuidUtility
|
||||||
@ -57,7 +57,7 @@ public class PlayerPageHandler implements PageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) throws WebException {
|
public Response resolve(Request request, RequestTarget target) throws WebException {
|
||||||
if (target.isEmpty()) {
|
if (target.isEmpty()) {
|
||||||
return responseFactory.pageNotFound404();
|
return responseFactory.pageNotFound404();
|
||||||
}
|
}
|
@ -31,18 +31,18 @@ import javax.inject.Inject;
|
|||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PageHandler for /players page.
|
* Resolves /players URL.
|
||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
@Singleton
|
@Singleton
|
||||||
public class PlayersPageHandler implements PageHandler {
|
public class PlayersPageResolver implements PageResolver {
|
||||||
|
|
||||||
private final DBSystem dbSystem;
|
private final DBSystem dbSystem;
|
||||||
private final ResponseFactory responseFactory;
|
private final ResponseFactory responseFactory;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public PlayersPageHandler(
|
public PlayersPageResolver(
|
||||||
DBSystem dbSystem,
|
DBSystem dbSystem,
|
||||||
ResponseFactory responseFactory
|
ResponseFactory responseFactory
|
||||||
) {
|
) {
|
||||||
@ -51,7 +51,7 @@ public class PlayersPageHandler implements PageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) throws WebException {
|
public Response resolve(Request request, RequestTarget target) throws WebException {
|
||||||
Database.State dbState = dbSystem.getDatabase().getState();
|
Database.State dbState = dbSystem.getDatabase().getState();
|
||||||
if (dbState != Database.State.OPEN) {
|
if (dbState != Database.State.OPEN) {
|
||||||
throw new ForbiddenException("Database is " + dbState.name() + " - Please try again later. You can check database status with /plan info");
|
throw new ForbiddenException("Database is " + dbState.name() + " - Please try again later. You can check database status with /plan info");
|
@ -31,26 +31,24 @@ import com.djrapitops.plan.identification.ServerInfo;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PageHandler for / page (Address root).
|
* Resolves '/' URL (Address Root).
|
||||||
* <p>
|
|
||||||
* Not Available if Authentication is not enabled.
|
|
||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
public class RootPageHandler implements PageHandler {
|
public class RootPageResolver implements PageResolver {
|
||||||
|
|
||||||
private final ResponseFactory responseFactory;
|
private final ResponseFactory responseFactory;
|
||||||
private final WebServer webServer;
|
private final WebServer webServer;
|
||||||
private final ServerInfo serverInfo;
|
private final ServerInfo serverInfo;
|
||||||
|
|
||||||
public RootPageHandler(ResponseFactory responseFactory, WebServer webServer, ServerInfo serverInfo) {
|
public RootPageResolver(ResponseFactory responseFactory, WebServer webServer, ServerInfo serverInfo) {
|
||||||
this.responseFactory = responseFactory;
|
this.responseFactory = responseFactory;
|
||||||
this.webServer = webServer;
|
this.webServer = webServer;
|
||||||
this.serverInfo = serverInfo;
|
this.serverInfo = serverInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) throws WebException {
|
public Response resolve(Request request, RequestTarget target) throws WebException {
|
||||||
Server server = serverInfo.getServer();
|
Server server = serverInfo.getServer();
|
||||||
if (!webServer.isAuthRequired()) {
|
if (!webServer.isAuthRequired()) {
|
||||||
return responseFactory.redirectResponse(server.isProxy() ? "network" : "server/" + Html.encodeToURL(server.getIdentifiableName()));
|
return responseFactory.redirectResponse(server.isProxy() ? "network" : "server/" + Html.encodeToURL(server.getIdentifiableName()));
|
@ -39,12 +39,12 @@ import java.util.Optional;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PageHandler for /server and /network pages.
|
* Resolves /network, /server and /server/${name/uuid} URLs.
|
||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
@Singleton
|
@Singleton
|
||||||
public class ServerPageHandler implements PageHandler {
|
public class ServerPageResolver implements PageResolver {
|
||||||
|
|
||||||
private final ResponseFactory responseFactory;
|
private final ResponseFactory responseFactory;
|
||||||
private final DBSystem dbSystem;
|
private final DBSystem dbSystem;
|
||||||
@ -52,7 +52,7 @@ public class ServerPageHandler implements PageHandler {
|
|||||||
private final Lazy<WebServer> webServer;
|
private final Lazy<WebServer> webServer;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public ServerPageHandler(
|
public ServerPageResolver(
|
||||||
ResponseFactory responseFactory,
|
ResponseFactory responseFactory,
|
||||||
DBSystem dbSystem,
|
DBSystem dbSystem,
|
||||||
ServerInfo serverInfo,
|
ServerInfo serverInfo,
|
||||||
@ -65,7 +65,7 @@ public class ServerPageHandler implements PageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) throws WebException {
|
public Response resolve(Request request, RequestTarget target) throws WebException {
|
||||||
Optional<UUID> serverUUID = getServerUUID(target);
|
Optional<UUID> serverUUID = getServerUUID(target);
|
||||||
boolean proxy = serverInfo.getServer().isProxy();
|
boolean proxy = serverInfo.getServer().isProxy();
|
||||||
if (serverUUID.isPresent()) {
|
if (serverUUID.isPresent()) {
|
@ -22,7 +22,7 @@ import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
|||||||
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
||||||
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
||||||
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
|
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
|
||||||
import com.djrapitops.plan.delivery.webserver.pages.PageHandler;
|
import com.djrapitops.plan.delivery.webserver.pages.PageResolver;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.Response;
|
import com.djrapitops.plan.delivery.webserver.response.Response;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
||||||
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
||||||
@ -36,18 +36,18 @@ import java.util.Collections;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JSON handler for different graph data JSON requests.
|
* Resolves /v1/graph JSON requests.
|
||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
@Singleton
|
@Singleton
|
||||||
public class GraphsJSONHandler implements PageHandler {
|
public class GraphsJSONResolver implements PageResolver {
|
||||||
|
|
||||||
private final Identifiers identifiers;
|
private final Identifiers identifiers;
|
||||||
private final GraphJSONParser graphJSON;
|
private final GraphJSONParser graphJSON;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public GraphsJSONHandler(
|
public GraphsJSONResolver(
|
||||||
Identifiers identifiers,
|
Identifiers identifiers,
|
||||||
GraphJSONParser graphJSON
|
GraphJSONParser graphJSON
|
||||||
) {
|
) {
|
||||||
@ -56,7 +56,7 @@ public class GraphsJSONHandler implements PageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) throws WebException {
|
public Response resolve(Request request, RequestTarget target) throws WebException {
|
||||||
String type = target.getParameter("type")
|
String type = target.getParameter("type")
|
||||||
.orElseThrow(() -> new BadRequestException("'type' parameter was not defined."));
|
.orElseThrow(() -> new BadRequestException("'type' parameter was not defined."));
|
||||||
|
|
@ -24,22 +24,22 @@ import com.djrapitops.plan.delivery.rendering.json.network.NetworkTabJSONParser;
|
|||||||
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
||||||
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
||||||
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
||||||
import com.djrapitops.plan.delivery.webserver.pages.TreePageHandler;
|
import com.djrapitops.plan.delivery.webserver.pages.CompositePageResolver;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.ResponseFactory;
|
import com.djrapitops.plan.delivery.webserver.response.ResponseFactory;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Root handler for different JSON end points.
|
* Resolves /v1/network/ JSON requests.
|
||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
@Singleton
|
@Singleton
|
||||||
public class NetworkJSONHandler extends TreePageHandler {
|
public class NetworkJSONResolver extends CompositePageResolver {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public NetworkJSONHandler(
|
public NetworkJSONResolver(
|
||||||
ResponseFactory responseFactory,
|
ResponseFactory responseFactory,
|
||||||
JSONFactory jsonFactory,
|
JSONFactory jsonFactory,
|
||||||
NetworkOverviewJSONParser networkOverviewJSONParser,
|
NetworkOverviewJSONParser networkOverviewJSONParser,
|
||||||
@ -56,7 +56,7 @@ public class NetworkJSONHandler extends TreePageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private <T> void registerPage(String identifier, DataID dataID, NetworkTabJSONParser<T> tabJSONParser) {
|
private <T> void registerPage(String identifier, DataID dataID, NetworkTabJSONParser<T> tabJSONParser) {
|
||||||
registerPage(identifier, new NetworkTabJSONHandler<>(dataID, tabJSONParser));
|
registerPage(identifier, new NetworkTabJSONResolver<>(dataID, tabJSONParser));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
@ -22,7 +22,7 @@ import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
|||||||
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
||||||
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
||||||
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
|
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
|
||||||
import com.djrapitops.plan.delivery.webserver.pages.PageHandler;
|
import com.djrapitops.plan.delivery.webserver.pages.PageResolver;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.Response;
|
import com.djrapitops.plan.delivery.webserver.response.Response;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
||||||
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
||||||
@ -30,22 +30,22 @@ import com.djrapitops.plan.exceptions.WebUserAuthException;
|
|||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generic Tab JSON handler for any tab's data.
|
* Functional interface wrapper for resolving network JSON directly from other methods.
|
||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
public class NetworkTabJSONHandler<T> implements PageHandler {
|
public class NetworkTabJSONResolver<T> implements PageResolver {
|
||||||
|
|
||||||
private final DataID dataID;
|
private final DataID dataID;
|
||||||
private final Supplier<T> jsonParser;
|
private final Supplier<T> jsonParser;
|
||||||
|
|
||||||
public NetworkTabJSONHandler(DataID dataID, NetworkTabJSONParser<T> jsonParser) {
|
public NetworkTabJSONResolver(DataID dataID, NetworkTabJSONParser<T> jsonParser) {
|
||||||
this.dataID = dataID;
|
this.dataID = dataID;
|
||||||
this.jsonParser = jsonParser;
|
this.jsonParser = jsonParser;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) {
|
public Response resolve(Request request, RequestTarget target) {
|
||||||
return JSONCache.getOrCache(dataID, () -> new JSONResponse(jsonParser.get()));
|
return JSONCache.getOrCache(dataID, () -> new JSONResponse(jsonParser.get()));
|
||||||
}
|
}
|
||||||
|
|
@ -21,7 +21,7 @@ import com.djrapitops.plan.delivery.rendering.json.PlayerJSONParser;
|
|||||||
import com.djrapitops.plan.delivery.webserver.Request;
|
import com.djrapitops.plan.delivery.webserver.Request;
|
||||||
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
||||||
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
||||||
import com.djrapitops.plan.delivery.webserver.pages.PageHandler;
|
import com.djrapitops.plan.delivery.webserver.pages.PageResolver;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.Response;
|
import com.djrapitops.plan.delivery.webserver.response.Response;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
||||||
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
||||||
@ -33,19 +33,19 @@ import javax.inject.Singleton;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
public class PlayerJSONHandler implements PageHandler {
|
public class PlayerJSONResolver implements PageResolver {
|
||||||
|
|
||||||
private final Identifiers identifiers;
|
private final Identifiers identifiers;
|
||||||
private final PlayerJSONParser jsonParser;
|
private final PlayerJSONParser jsonParser;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public PlayerJSONHandler(Identifiers identifiers, PlayerJSONParser jsonParser) {
|
public PlayerJSONResolver(Identifiers identifiers, PlayerJSONParser jsonParser) {
|
||||||
this.identifiers = identifiers;
|
this.identifiers = identifiers;
|
||||||
this.jsonParser = jsonParser;
|
this.jsonParser = jsonParser;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) throws WebException {
|
public Response resolve(Request request, RequestTarget target) throws WebException {
|
||||||
UUID playerUUID = identifiers.getPlayerUUID(target); // Can throw BadRequestException
|
UUID playerUUID = identifiers.getPlayerUUID(target); // Can throw BadRequestException
|
||||||
return new JSONResponse(jsonParser.createJSONAsMap(playerUUID));
|
return new JSONResponse(jsonParser.createJSONAsMap(playerUUID));
|
||||||
}
|
}
|
@ -22,7 +22,7 @@ import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
|||||||
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
||||||
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
||||||
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
|
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
|
||||||
import com.djrapitops.plan.delivery.webserver.pages.PageHandler;
|
import com.djrapitops.plan.delivery.webserver.pages.PageResolver;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.Response;
|
import com.djrapitops.plan.delivery.webserver.response.Response;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
||||||
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
||||||
@ -40,13 +40,13 @@ import java.util.UUID;
|
|||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
@Singleton
|
@Singleton
|
||||||
public class PlayerKillsJSONHandler implements PageHandler {
|
public class PlayerKillsJSONResolver implements PageResolver {
|
||||||
|
|
||||||
private final Identifiers identifiers;
|
private final Identifiers identifiers;
|
||||||
private final JSONFactory jsonFactory;
|
private final JSONFactory jsonFactory;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public PlayerKillsJSONHandler(
|
public PlayerKillsJSONResolver(
|
||||||
Identifiers identifiers,
|
Identifiers identifiers,
|
||||||
JSONFactory jsonFactory
|
JSONFactory jsonFactory
|
||||||
) {
|
) {
|
||||||
@ -55,7 +55,7 @@ public class PlayerKillsJSONHandler implements PageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) throws WebException {
|
public Response resolve(Request request, RequestTarget target) throws WebException {
|
||||||
UUID serverUUID = identifiers.getServerUUID(target);
|
UUID serverUUID = identifiers.getServerUUID(target);
|
||||||
return JSONCache.getOrCache(DataID.KILLS, serverUUID, () ->
|
return JSONCache.getOrCache(DataID.KILLS, serverUUID, () ->
|
||||||
new JSONResponse(Collections.singletonMap("player_kills", jsonFactory.serverPlayerKillsAsJSONMap(serverUUID)))
|
new JSONResponse(Collections.singletonMap("player_kills", jsonFactory.serverPlayerKillsAsJSONMap(serverUUID)))
|
@ -17,13 +17,12 @@
|
|||||||
package com.djrapitops.plan.delivery.webserver.pages.json;
|
package com.djrapitops.plan.delivery.webserver.pages.json;
|
||||||
|
|
||||||
import com.djrapitops.plan.delivery.rendering.json.JSONFactory;
|
import com.djrapitops.plan.delivery.rendering.json.JSONFactory;
|
||||||
import com.djrapitops.plan.delivery.rendering.json.PlayersTableJSONParser;
|
|
||||||
import com.djrapitops.plan.delivery.webserver.Request;
|
import com.djrapitops.plan.delivery.webserver.Request;
|
||||||
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
||||||
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
||||||
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
||||||
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
|
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
|
||||||
import com.djrapitops.plan.delivery.webserver.pages.PageHandler;
|
import com.djrapitops.plan.delivery.webserver.pages.PageResolver;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.Response;
|
import com.djrapitops.plan.delivery.webserver.response.Response;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
||||||
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
||||||
@ -35,19 +34,18 @@ import javax.inject.Singleton;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JSON handler for different Player table JSON requests.
|
* Resolves /v1/players JSON requests.
|
||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
* @see PlayersTableJSONParser For JSON parsing of /server players table.
|
|
||||||
*/
|
*/
|
||||||
@Singleton
|
@Singleton
|
||||||
public class PlayersTableJSONHandler implements PageHandler {
|
public class PlayersTableJSONResolver implements PageResolver {
|
||||||
|
|
||||||
private final Identifiers identifiers;
|
private final Identifiers identifiers;
|
||||||
private final JSONFactory jsonFactory;
|
private final JSONFactory jsonFactory;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public PlayersTableJSONHandler(
|
public PlayersTableJSONResolver(
|
||||||
Identifiers identifiers,
|
Identifiers identifiers,
|
||||||
JSONFactory jsonFactory
|
JSONFactory jsonFactory
|
||||||
) {
|
) {
|
||||||
@ -56,7 +54,7 @@ public class PlayersTableJSONHandler implements PageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) throws WebException {
|
public Response resolve(Request request, RequestTarget target) throws WebException {
|
||||||
if (target.getParameter("server").isPresent()) {
|
if (target.getParameter("server").isPresent()) {
|
||||||
UUID serverUUID = identifiers.getServerUUID(target); // Can throw BadRequestException
|
UUID serverUUID = identifiers.getServerUUID(target); // Can throw BadRequestException
|
||||||
return JSONCache.getOrCache(DataID.PLAYERS, serverUUID, () -> new JSONResponse(jsonFactory.serverPlayersTableJSON(serverUUID)));
|
return JSONCache.getOrCache(DataID.PLAYERS, serverUUID, () -> new JSONResponse(jsonFactory.serverPlayersTableJSON(serverUUID)));
|
@ -20,7 +20,7 @@ import com.djrapitops.plan.delivery.rendering.json.*;
|
|||||||
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
||||||
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
||||||
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
||||||
import com.djrapitops.plan.delivery.webserver.pages.TreePageHandler;
|
import com.djrapitops.plan.delivery.webserver.pages.CompositePageResolver;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.ResponseFactory;
|
import com.djrapitops.plan.delivery.webserver.response.ResponseFactory;
|
||||||
import com.djrapitops.plan.identification.Identifiers;
|
import com.djrapitops.plan.identification.Identifiers;
|
||||||
|
|
||||||
@ -28,57 +28,57 @@ import javax.inject.Inject;
|
|||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Root handler for different JSON end points.
|
* Root resolver for JSON requests, resolves /v1/ URLs.
|
||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
@Singleton
|
@Singleton
|
||||||
public class RootJSONHandler extends TreePageHandler {
|
public class RootJSONResolver extends CompositePageResolver {
|
||||||
|
|
||||||
private final Identifiers identifiers;
|
private final Identifiers identifiers;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public RootJSONHandler(
|
public RootJSONResolver(
|
||||||
ResponseFactory responseFactory,
|
ResponseFactory responseFactory,
|
||||||
Identifiers identifiers,
|
Identifiers identifiers,
|
||||||
JSONFactory jsonFactory,
|
JSONFactory jsonFactory,
|
||||||
|
|
||||||
GraphsJSONHandler graphsJSONHandler,
|
GraphsJSONResolver graphsJSONResolver,
|
||||||
SessionsJSONHandler sessionsJSONHandler,
|
SessionsJSONResolver sessionsJSONResolver,
|
||||||
PlayersTableJSONHandler playersTableJSONHandler,
|
PlayersTableJSONResolver playersTableJSONResolver,
|
||||||
ServerOverviewJSONParser serverOverviewJSONParser,
|
ServerOverviewJSONParser overviewJSONParser,
|
||||||
OnlineActivityOverviewJSONParser onlineActivityOverviewJSONParser,
|
OnlineActivityOverviewJSONParser onlineActivityOverviewJSONParser,
|
||||||
SessionsOverviewJSONParser sessionsOverviewJSONParser,
|
SessionsOverviewJSONParser sessionsOverviewJSONParser,
|
||||||
PlayerKillsJSONHandler playerKillsJSONHandler,
|
PlayerKillsJSONResolver playerKillsJSONResolver,
|
||||||
PvPPvEJSONParser pvPPvEJSONParser,
|
PvPPvEJSONParser pvPPvEJSONParser,
|
||||||
PlayerBaseOverviewJSONParser playerBaseOverviewJSONParser,
|
PlayerBaseOverviewJSONParser playerBaseOverviewJSONParser,
|
||||||
PerformanceJSONParser performanceJSONParser,
|
PerformanceJSONParser performanceJSONParser,
|
||||||
|
|
||||||
PlayerJSONHandler playerJSONHandler,
|
PlayerJSONResolver playerJSONResolver,
|
||||||
NetworkJSONHandler networkJSONHandler
|
NetworkJSONResolver networkJSONResolver
|
||||||
) {
|
) {
|
||||||
super(responseFactory);
|
super(responseFactory);
|
||||||
this.identifiers = identifiers;
|
this.identifiers = identifiers;
|
||||||
|
|
||||||
registerPage("players", playersTableJSONHandler, 1);
|
registerPage("players", playersTableJSONResolver, 1);
|
||||||
registerPage("sessions", sessionsJSONHandler, 0);
|
registerPage("sessions", sessionsJSONResolver, 0);
|
||||||
registerPage("kills", playerKillsJSONHandler, 0);
|
registerPage("kills", playerKillsJSONResolver, 0);
|
||||||
registerPage("pingTable", DataID.PING_TABLE, jsonFactory::pingPerGeolocation);
|
registerPage("pingTable", DataID.PING_TABLE, jsonFactory::pingPerGeolocation);
|
||||||
registerPage("graph", graphsJSONHandler, 0);
|
registerPage("graph", graphsJSONResolver, 0);
|
||||||
|
|
||||||
registerPage("serverOverview", DataID.SERVER_OVERVIEW, serverOverviewJSONParser);
|
registerPage("serverOverview", DataID.SERVER_OVERVIEW, overviewJSONParser);
|
||||||
registerPage("onlineOverview", DataID.ONLINE_OVERVIEW, onlineActivityOverviewJSONParser);
|
registerPage("onlineOverview", DataID.ONLINE_OVERVIEW, onlineActivityOverviewJSONParser);
|
||||||
registerPage("sessionsOverview", DataID.SESSIONS_OVERVIEW, sessionsOverviewJSONParser);
|
registerPage("sessionsOverview", DataID.SESSIONS_OVERVIEW, sessionsOverviewJSONParser);
|
||||||
registerPage("playerVersus", DataID.PVP_PVE, pvPPvEJSONParser);
|
registerPage("playerVersus", DataID.PVP_PVE, pvPPvEJSONParser);
|
||||||
registerPage("playerbaseOverview", DataID.PLAYERBASE_OVERVIEW, playerBaseOverviewJSONParser);
|
registerPage("playerbaseOverview", DataID.PLAYERBASE_OVERVIEW, playerBaseOverviewJSONParser);
|
||||||
registerPage("performanceOverview", DataID.PERFORMANCE_OVERVIEW, performanceJSONParser);
|
registerPage("performanceOverview", DataID.PERFORMANCE_OVERVIEW, performanceJSONParser);
|
||||||
|
|
||||||
registerPage("player", playerJSONHandler, 2);
|
registerPage("player", playerJSONResolver, 2);
|
||||||
registerPage("network", networkJSONHandler, 0);
|
registerPage("network", networkJSONResolver, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T> void registerPage(String identifier, DataID dataID, ServerTabJSONParser<T> tabJSONParser) {
|
private <T> void registerPage(String identifier, DataID dataID, ServerTabJSONParser<T> tabJSONParser) {
|
||||||
registerPage(identifier, new ServerTabJSONHandler<>(dataID, identifiers, tabJSONParser), 0);
|
registerPage(identifier, new ServerTabJSONResolver<>(dataID, identifiers, tabJSONParser), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
@ -22,7 +22,7 @@ import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
|||||||
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
||||||
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
||||||
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
|
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
|
||||||
import com.djrapitops.plan.delivery.webserver.pages.PageHandler;
|
import com.djrapitops.plan.delivery.webserver.pages.PageResolver;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.Response;
|
import com.djrapitops.plan.delivery.webserver.response.Response;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
||||||
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
||||||
@ -33,17 +33,17 @@ import java.util.UUID;
|
|||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generic Tab JSON handler for any tab's data.
|
* Functional interface wrapper for resolving server specific JSON directly from other methods.
|
||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
public class ServerTabJSONHandler<T> implements PageHandler {
|
public class ServerTabJSONResolver<T> implements PageResolver {
|
||||||
|
|
||||||
private final DataID dataID;
|
private final DataID dataID;
|
||||||
private final Identifiers identifiers;
|
private final Identifiers identifiers;
|
||||||
private final Function<UUID, T> jsonParser;
|
private final Function<UUID, T> jsonParser;
|
||||||
|
|
||||||
public ServerTabJSONHandler(
|
public ServerTabJSONResolver(
|
||||||
DataID dataID,
|
DataID dataID,
|
||||||
Identifiers identifiers,
|
Identifiers identifiers,
|
||||||
ServerTabJSONParser<T> jsonParser
|
ServerTabJSONParser<T> jsonParser
|
||||||
@ -54,7 +54,7 @@ public class ServerTabJSONHandler<T> implements PageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) throws WebException {
|
public Response resolve(Request request, RequestTarget target) throws WebException {
|
||||||
UUID serverUUID = identifiers.getServerUUID(target); // Can throw BadRequestException
|
UUID serverUUID = identifiers.getServerUUID(target); // Can throw BadRequestException
|
||||||
return JSONCache.getOrCache(dataID, serverUUID, () -> new JSONResponse(jsonParser.apply(serverUUID)));
|
return JSONCache.getOrCache(dataID, serverUUID, () -> new JSONResponse(jsonParser.apply(serverUUID)));
|
||||||
}
|
}
|
@ -22,7 +22,7 @@ import com.djrapitops.plan.delivery.webserver.RequestTarget;
|
|||||||
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
import com.djrapitops.plan.delivery.webserver.auth.Authentication;
|
||||||
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
import com.djrapitops.plan.delivery.webserver.cache.DataID;
|
||||||
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
|
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
|
||||||
import com.djrapitops.plan.delivery.webserver.pages.PageHandler;
|
import com.djrapitops.plan.delivery.webserver.pages.PageResolver;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.Response;
|
import com.djrapitops.plan.delivery.webserver.response.Response;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
|
||||||
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
||||||
@ -40,13 +40,13 @@ import java.util.UUID;
|
|||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
@Singleton
|
@Singleton
|
||||||
public class SessionsJSONHandler implements PageHandler {
|
public class SessionsJSONResolver implements PageResolver {
|
||||||
|
|
||||||
private final Identifiers identifiers;
|
private final Identifiers identifiers;
|
||||||
private final JSONFactory jsonFactory;
|
private final JSONFactory jsonFactory;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public SessionsJSONHandler(
|
public SessionsJSONResolver(
|
||||||
Identifiers identifiers,
|
Identifiers identifiers,
|
||||||
JSONFactory jsonFactory
|
JSONFactory jsonFactory
|
||||||
) {
|
) {
|
||||||
@ -55,7 +55,7 @@ public class SessionsJSONHandler implements PageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) throws WebException {
|
public Response resolve(Request request, RequestTarget target) throws WebException {
|
||||||
if (target.getParameter("server").isPresent()) {
|
if (target.getParameter("server").isPresent()) {
|
||||||
UUID serverUUID = identifiers.getServerUUID(target);
|
UUID serverUUID = identifiers.getServerUUID(target);
|
||||||
return JSONCache.getOrCache(DataID.SESSIONS, serverUUID, () ->
|
return JSONCache.getOrCache(DataID.SESSIONS, serverUUID, () ->
|
@ -17,10 +17,7 @@
|
|||||||
package com.djrapitops.plan.delivery.webserver.response;
|
package com.djrapitops.plan.delivery.webserver.response;
|
||||||
|
|
||||||
import com.djrapitops.plan.delivery.rendering.pages.PageFactory;
|
import com.djrapitops.plan.delivery.rendering.pages.PageFactory;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.errors.ErrorResponse;
|
import com.djrapitops.plan.delivery.webserver.response.errors.*;
|
||||||
import com.djrapitops.plan.delivery.webserver.response.errors.ForbiddenResponse;
|
|
||||||
import com.djrapitops.plan.delivery.webserver.response.errors.InternalErrorResponse;
|
|
||||||
import com.djrapitops.plan.delivery.webserver.response.errors.NotFoundResponse;
|
|
||||||
import com.djrapitops.plan.delivery.webserver.response.pages.*;
|
import com.djrapitops.plan.delivery.webserver.response.pages.*;
|
||||||
import com.djrapitops.plan.exceptions.ParseException;
|
import com.djrapitops.plan.exceptions.ParseException;
|
||||||
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
import com.djrapitops.plan.exceptions.WebUserAuthException;
|
||||||
@ -197,6 +194,10 @@ public class ResponseFactory {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BadRequestResponse badRequest(String errorMessage, String target) {
|
||||||
|
return new BadRequestResponse(errorMessage + " (when requesting '" + target + "')");
|
||||||
|
}
|
||||||
|
|
||||||
public Response playerPageResponse(UUID playerUUID) {
|
public Response playerPageResponse(UUID playerUUID) {
|
||||||
try {
|
try {
|
||||||
return new PageResponse(pageFactory.playerPage(playerUUID));
|
return new PageResponse(pageFactory.playerPage(playerUUID));
|
||||||
|
Loading…
Reference in New Issue
Block a user