changeset 1383:a3d0d1c2ce89

add NotFound to luanhost
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 01 Aug 2019 16:49:47 -0600
parents 9604579c1c9b
children f5368cd8c056
files src/luan/host/run.luan src/luan/modules/http/Http.luan src/luan/modules/http/LuanHandler.java src/luan/modules/http/NotFound.java
diffstat 4 files changed, 19 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/luan/host/run.luan	Mon Jul 29 09:50:14 2019 -0600
+++ b/src/luan/host/run.luan	Thu Aug 01 16:49:47 2019 -0600
@@ -7,6 +7,8 @@
 local Hosting = require "luan:host/Hosting.luan"
 local Logging = require "luan:logging/Logging.luan"
 local logger = Logging.logger "run"
+local NotFound = require "java:luan.modules.http.NotFound"
+local ListHandler = require "java:luan.lib.webserver.handlers.ListHandler"
 local WebHandler = require "java:luan.host.WebHandler"
 Hosting.WebHandler = WebHandler
 
@@ -24,9 +26,10 @@
 local ContentTypeHandler = require "java:luan.lib.webserver.handlers.ContentTypeHandler"
 local SafeHandler = require "java:luan.lib.webserver.handlers.SafeHandler"
 
-local webHandler = WebHandler.new(Hosting.sites_dir)
-local handler = webHandler
+local handler = WebHandler.new(Hosting.sites_dir)
+local not_found_hander = NotFound.new(handler)
 handler = IndexHandler.new(handler)
+handler = ListHandler.new( handler, not_found_hander )
 handler = ContentTypeHandler.new(handler)
 handler = SafeHandler.new(handler)
 local server = Server.ForAddress.new("127.0.0.1",8080,handler)
--- a/src/luan/modules/http/Http.luan	Mon Jul 29 09:50:14 2019 -0600
+++ b/src/luan/modules/http/Http.luan	Thu Aug 01 16:49:47 2019 -0600
@@ -75,6 +75,7 @@
 	OK = 200
 	MOVED_PERMANENTLY = 301
 	FOUND = 302
+	NOT_FOUND = 404
 	-- add more as needed
 }
 Http.STATUS = STATUS
--- a/src/luan/modules/http/LuanHandler.java	Mon Jul 29 09:50:14 2019 -0600
+++ b/src/luan/modules/http/LuanHandler.java	Thu Aug 01 16:49:47 2019 -0600
@@ -88,15 +88,17 @@
 		return luan;
 	}
 */
+	static final String NOT_FOUND = "luan-not-found";
+
 	@Override public Response handle(Request request) {
 		if( isDisabled )
 			return null;
 		if( request.path.endsWith("/") )
 			return null;
-		return handle(request,false);
+		return handle( request, request.headers.containsKey(NOT_FOUND) );
 	}
 
-	Response handle(Request request,boolean notFound) {
+	private Response handle(Request request,boolean notFound) {
 		Thread thread = Thread.currentThread();
 		String oldName = thread.getName();
 		thread.setName(request.headers.get("host")+request.path);
--- a/src/luan/modules/http/NotFound.java	Mon Jul 29 09:50:14 2019 -0600
+++ b/src/luan/modules/http/NotFound.java	Thu Aug 01 16:49:47 2019 -0600
@@ -6,14 +6,19 @@
 
 
 public class NotFound implements Handler {
-	private final LuanHandler luanHandler;
+	private final Handler handler;
 
-	public NotFound(LuanHandler luanHandler) {
-		this.luanHandler = luanHandler;
+	public NotFound(Handler handler) {
+		this.handler = handler;
 	}
 
 	@Override public Response handle(Request request) {
-		return luanHandler.handle(request,true);
+		request.headers.put(LuanHandler.NOT_FOUND,"whatever");
+		try {
+			return handler.handle(request);
+		} finally {
+			request.headers.remove(LuanHandler.NOT_FOUND);
+		}
 	}
 
 }