cleaner routes, no more route object
This commit is contained in:
@@ -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");
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user