cleaner routes, no more route object

This commit is contained in:
Daniel
2024-10-23 19:56:32 +03:00
parent 6831288ba2
commit 037889fa10
4 changed files with 14 additions and 41 deletions

View File

@@ -12,7 +12,7 @@ public class HttpResponse {
} }
public void sendResponse(int statusCode, String message) { public void sendResponse(int statusCode, String message) {
Logger.info("HTTP", "Outgoing " + statusCode + ": " + message); Logger.info("HTTP", "Outgoing: " + statusCode + " " + message);
out.println("HTTP/1.1 " + statusCode + " " + message); out.println("HTTP/1.1 " + statusCode + " " + message);
out.println("Content-Type: text/plain"); out.println("Content-Type: text/plain");
out.println("Connection: close"); out.println("Connection: close");

View File

@@ -68,6 +68,7 @@ public class HttpServer {
HttpRequest request = new HttpRequest(in); HttpRequest request = new HttpRequest(in);
HttpResponse response = new HttpResponse(out); HttpResponse response = new HttpResponse(out);
Logger.info("HTTP", "Incoming: " + request.getMethod() + " " + request.getPath());
router.handleRequest(request, response); router.handleRequest(request, response);
} catch (IOException e) { } catch (IOException e) {
Logger.error("HTTP", "Error handling client: " + e.getMessage()); Logger.error("HTTP", "Error handling client: " + e.getMessage());

View File

@@ -1,31 +0,0 @@
package org.lumijiez.core.routing;
import org.lumijiez.core.http.HttpHandler;
import org.lumijiez.core.http.HttpRequest;
import org.lumijiez.core.http.HttpResponse;
import org.lumijiez.logging.Logger;
public class Route {
private final String path;
private final String method;
private final HttpHandler handler;
public Route(String method, String path, HttpHandler handler) {
this.method = method;
this.path = path;
this.handler = handler;
}
public String getPath() {
return path;
}
public String getMethod() {
return method;
}
public void handle(HttpRequest request, HttpResponse response) {
Logger.info("HTTP", "Incoming " + request.getMethod() + " " + request.getPath());
handler.handle(request, response);
}
}

View File

@@ -5,23 +5,26 @@ import org.lumijiez.core.http.HttpRequest;
import org.lumijiez.core.http.HttpResponse; import org.lumijiez.core.http.HttpResponse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
public class Router { public class Router {
private final List<Route> routes = new ArrayList<>(); private final Map<String, HttpHandler> routes = new HashMap<>();
public void addRoute(String method, String path, HttpHandler handler) { public void addRoute(String method, String path, HttpHandler handler) {
routes.add(new Route(method, path, handler)); String key = method.toUpperCase() + ":" + path;
routes.put(key, handler);
} }
public void handleRequest(HttpRequest request, HttpResponse response) { public void handleRequest(HttpRequest request, HttpResponse response) {
for (Route route : routes) { String key = request.getMethod().toUpperCase() + ":" + request.getPath();
if (route.getMethod().equalsIgnoreCase(request.getMethod()) && HttpHandler handler = routes.get(key);
route.getPath().equals(request.getPath())) {
route.handle(request, response); if (handler != null) {
return; handler.handle(request, response);
} } else {
}
response.sendResponse(404, "Not Found"); response.sendResponse(404, "Not Found");
} }
}
} }