diff --git a/src/main/java/me/youhavetrouble/inviter/http/endpoints/HandlerKernel.java b/src/main/java/me/youhavetrouble/inviter/http/endpoints/HandlerKernel.java index f0b94f1..73accd5 100644 --- a/src/main/java/me/youhavetrouble/inviter/http/endpoints/HandlerKernel.java +++ b/src/main/java/me/youhavetrouble/inviter/http/endpoints/HandlerKernel.java @@ -16,6 +16,7 @@ public class HandlerKernel implements HttpHandler { handlers.add(new GetDiscordInviteByGuildId()); // Static endpoints + handlers.add(new IconEndpoint()); handlers.add(new MainEndpoint()); } diff --git a/src/main/java/me/youhavetrouble/inviter/http/endpoints/IconEndpoint.java b/src/main/java/me/youhavetrouble/inviter/http/endpoints/IconEndpoint.java new file mode 100644 index 0000000..1168027 --- /dev/null +++ b/src/main/java/me/youhavetrouble/inviter/http/endpoints/IconEndpoint.java @@ -0,0 +1,51 @@ +package me.youhavetrouble.inviter.http.endpoints; + +import com.sun.net.httpserver.HttpExchange; +import me.youhavetrouble.inviter.Main; +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.io.InputStream; +import java.util.regex.Pattern; + +public class IconEndpoint implements EndpointHandler { + + private final Pattern pathPattern = Pattern.compile("^/icon$"); + + private final byte[] imageContent; + + public IconEndpoint() { + byte[] rawTemplate = null; + try (InputStream resource = this.getClass().getResourceAsStream("/asset/icon.png")) { + rawTemplate = resource.readAllBytes(); + } catch (IOException | NullPointerException e) { + Main.LOGGER.warn("Failed to load template for main endpoint", e); + } + this.imageContent = rawTemplate; + } + + @NotNull + @Override + public Pattern pathPattern() { + return pathPattern; + } + + @Override + public void handle(@NotNull HttpExchange exchange) throws IOException { + if (imageContent == null) { + exchange.sendResponseHeaders(404, -1); + return; + } + + if (!exchange.getRequestMethod().equals("GET")) { + exchange.sendResponseHeaders(405, -1); + return; + } + + exchange.getResponseHeaders().set("Content-Type", "image/png"); + exchange.sendResponseHeaders(200, imageContent.length); + exchange.getResponseBody().write(imageContent); + exchange.getResponseBody().close(); + } + +} diff --git a/src/main/resources/asset/icon.png b/src/main/resources/asset/icon.png new file mode 100644 index 0000000..11dc4ad Binary files /dev/null and b/src/main/resources/asset/icon.png differ diff --git a/src/main/resources/template/guild-not-supported.html b/src/main/resources/template/guild-not-supported.html index 3e13bd0..69c0782 100644 --- a/src/main/resources/template/guild-not-supported.html +++ b/src/main/resources/template/guild-not-supported.html @@ -10,12 +10,12 @@ - + - + - +