From 6256bc32d023ada43e8879e0c4d2227ae5066d5e Mon Sep 17 00:00:00 2001 From: Daniel <59575049+lumijiez@users.noreply.github.com> Date: Wed, 23 Oct 2024 19:26:36 +0300 Subject: [PATCH] use HttpHandler functional interface instead of BiConsumer --- .idea/uiDesigner.xml | 124 ++++++++++++++++++ src/main/java/org/lumijiez/Main.java | 20 +-- .../lumijiez/core/{ => http}/HttpHandler.java | 2 +- .../lumijiez/core/{ => http}/HttpRequest.java | 2 +- .../core/{ => http}/HttpResponse.java | 2 +- .../lumijiez/core/{ => http}/HttpServer.java | 12 +- .../lumijiez/core/{ => routing}/Route.java | 12 +- .../lumijiez/core/{ => routing}/Router.java | 9 +- .../lumijiez/core/{ => tcp}/TcpServer.java | 2 +- 9 files changed, 152 insertions(+), 33 deletions(-) create mode 100644 .idea/uiDesigner.xml rename src/main/java/org/lumijiez/core/{ => http}/HttpHandler.java (78%) rename src/main/java/org/lumijiez/core/{ => http}/HttpRequest.java (96%) rename src/main/java/org/lumijiez/core/{ => http}/HttpResponse.java (93%) rename src/main/java/org/lumijiez/core/{ => http}/HttpServer.java (76%) rename src/main/java/org/lumijiez/core/{ => routing}/Route.java (54%) rename src/main/java/org/lumijiez/core/{ => routing}/Router.java (71%) rename src/main/java/org/lumijiez/core/{ => tcp}/TcpServer.java (98%) diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/lumijiez/Main.java b/src/main/java/org/lumijiez/Main.java index b38ef6b..4608954 100644 --- a/src/main/java/org/lumijiez/Main.java +++ b/src/main/java/org/lumijiez/Main.java @@ -1,25 +1,13 @@ package org.lumijiez; -import org.lumijiez.core.HttpServer; - -import java.net.Socket; +import org.lumijiez.core.http.HttpServer; +import org.lumijiez.logging.Logger; public class Main { public static void main(String[] args) { - TcpServerCallback callback = new TcpServerCallback() { - @Override - public String onClientMessage(String message, Socket clientSocket) { - return ""; - } + Logger logger = new Logger(Logger.LogLevel.DEBUG); - @Override - public String onClientConnected(Socket clientSocket) { - System.out.println("Client connected: " + clientSocket.getInetAddress()); - return ""; - } - }; - - HttpServer httpServer = new HttpServer(8080, callback); + HttpServer httpServer = new HttpServer(8080); httpServer.GET("/hello", (req, res) -> { res.sendResponse(200, "Hello, World!"); diff --git a/src/main/java/org/lumijiez/core/HttpHandler.java b/src/main/java/org/lumijiez/core/http/HttpHandler.java similarity index 78% rename from src/main/java/org/lumijiez/core/HttpHandler.java rename to src/main/java/org/lumijiez/core/http/HttpHandler.java index 35514fd..315f982 100644 --- a/src/main/java/org/lumijiez/core/HttpHandler.java +++ b/src/main/java/org/lumijiez/core/http/HttpHandler.java @@ -1,4 +1,4 @@ -package org.lumijiez.core; +package org.lumijiez.core.http; @FunctionalInterface public interface HttpHandler { diff --git a/src/main/java/org/lumijiez/core/HttpRequest.java b/src/main/java/org/lumijiez/core/http/HttpRequest.java similarity index 96% rename from src/main/java/org/lumijiez/core/HttpRequest.java rename to src/main/java/org/lumijiez/core/http/HttpRequest.java index bff82eb..c7da286 100644 --- a/src/main/java/org/lumijiez/core/HttpRequest.java +++ b/src/main/java/org/lumijiez/core/http/HttpRequest.java @@ -1,4 +1,4 @@ -package org.lumijiez.core; +package org.lumijiez.core.http; import java.io.BufferedReader; import java.io.IOException; diff --git a/src/main/java/org/lumijiez/core/HttpResponse.java b/src/main/java/org/lumijiez/core/http/HttpResponse.java similarity index 93% rename from src/main/java/org/lumijiez/core/HttpResponse.java rename to src/main/java/org/lumijiez/core/http/HttpResponse.java index 9eb9ed0..d197c5a 100644 --- a/src/main/java/org/lumijiez/core/HttpResponse.java +++ b/src/main/java/org/lumijiez/core/http/HttpResponse.java @@ -1,4 +1,4 @@ -package org.lumijiez.core; +package org.lumijiez.core.http; import java.io.PrintWriter; diff --git a/src/main/java/org/lumijiez/core/HttpServer.java b/src/main/java/org/lumijiez/core/http/HttpServer.java similarity index 76% rename from src/main/java/org/lumijiez/core/HttpServer.java rename to src/main/java/org/lumijiez/core/http/HttpServer.java index 99b5ce9..8f9bcb9 100644 --- a/src/main/java/org/lumijiez/core/HttpServer.java +++ b/src/main/java/org/lumijiez/core/http/HttpServer.java @@ -1,25 +1,27 @@ -package org.lumijiez.core; +package org.lumijiez.core.http; + +import org.lumijiez.core.routing.Router; +import org.lumijiez.core.tcp.TcpServer; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; -import java.util.function.BiConsumer; public class HttpServer extends TcpServer { private final Router router; - public HttpServer(int port, TcpServerCallback callback) { + public HttpServer(int port) { super(port); this.router = new Router(); } - public void GET(String path, BiConsumer handler) { + public void GET(String path, HttpHandler handler) { router.addRoute("GET", path, handler); } - public void POST(String path, BiConsumer handler) { + public void POST(String path, HttpHandler handler) { router.addRoute("POST", path, handler); } diff --git a/src/main/java/org/lumijiez/core/Route.java b/src/main/java/org/lumijiez/core/routing/Route.java similarity index 54% rename from src/main/java/org/lumijiez/core/Route.java rename to src/main/java/org/lumijiez/core/routing/Route.java index 7e4abd5..a7173b8 100644 --- a/src/main/java/org/lumijiez/core/Route.java +++ b/src/main/java/org/lumijiez/core/routing/Route.java @@ -1,13 +1,15 @@ -package org.lumijiez.core; +package org.lumijiez.core.routing; -import java.util.function.BiConsumer; +import org.lumijiez.core.http.HttpHandler; +import org.lumijiez.core.http.HttpRequest; +import org.lumijiez.core.http.HttpResponse; public class Route { private final String path; private final String method; - private final BiConsumer handler; + private final HttpHandler handler; - public Route(String method, String path, BiConsumer handler) { + public Route(String method, String path, HttpHandler handler) { this.method = method; this.path = path; this.handler = handler; @@ -22,6 +24,6 @@ public class Route { } public void handle(HttpRequest request, HttpResponse response) { - handler.accept(request, response); + handler.handle(request, response); } } diff --git a/src/main/java/org/lumijiez/core/Router.java b/src/main/java/org/lumijiez/core/routing/Router.java similarity index 71% rename from src/main/java/org/lumijiez/core/Router.java rename to src/main/java/org/lumijiez/core/routing/Router.java index 8d164c1..c9df2f8 100644 --- a/src/main/java/org/lumijiez/core/Router.java +++ b/src/main/java/org/lumijiez/core/routing/Router.java @@ -1,13 +1,16 @@ -package org.lumijiez.core; +package org.lumijiez.core.routing; + +import org.lumijiez.core.http.HttpHandler; +import org.lumijiez.core.http.HttpRequest; +import org.lumijiez.core.http.HttpResponse; import java.util.ArrayList; import java.util.List; -import java.util.function.BiConsumer; public class Router { private final List routes = new ArrayList<>(); - public void addRoute(String method, String path, BiConsumer handler) { + public void addRoute(String method, String path, HttpHandler handler) { routes.add(new Route(method, path, handler)); } diff --git a/src/main/java/org/lumijiez/core/TcpServer.java b/src/main/java/org/lumijiez/core/tcp/TcpServer.java similarity index 98% rename from src/main/java/org/lumijiez/core/TcpServer.java rename to src/main/java/org/lumijiez/core/tcp/TcpServer.java index 500ac29..5152670 100644 --- a/src/main/java/org/lumijiez/core/TcpServer.java +++ b/src/main/java/org/lumijiez/core/tcp/TcpServer.java @@ -1,4 +1,4 @@ -package org.lumijiez.core; +package org.lumijiez.core.tcp; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket;