diff src/luan/modules/http/impl/Server.luan @ 1167:7e6f28c769a1

better handlers
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 08 Feb 2018 19:06:31 -0700
parents e2d2354807f3
children 312e4cadd508
line wrap: on
line diff
--- a/src/luan/modules/http/impl/Server.luan	Thu Feb 08 02:22:51 2018 -0700
+++ b/src/luan/modules/http/impl/Server.luan	Thu Feb 08 19:06:31 2018 -0700
@@ -8,7 +8,7 @@
 local Package = require "luan:Package.luan"
 local Rpc = require "luan:Rpc.luan"
 local Thread = require "luan:Thread.luan"
---local Http = require "luan:http/Http.luan"
+local Http = require "luan:http/Http.luan"
 require "luan:logging/init.luan"  -- initialize logging
 local Logging = require "luan:logging/Logging.luan"
 local logger = Logging.logger "http/Server"
@@ -16,6 +16,7 @@
 java()
 local JavaServer = require "java:luan.webserver.Server"
 local FileHandler = require "java:luan.webserver.handlers.FileHandler"
+local DirHandler = require "java:luan.webserver.handlers.DirHandler"
 local IndexHandler = require "java:luan.webserver.handlers.IndexHandler"
 local ContentTypeHandler = require "java:luan.webserver.handlers.ContentTypeHandler"
 local SafeHandler = require "java:luan.webserver.handlers.SafeHandler"
@@ -39,19 +40,20 @@
 		dir_uri = "file:"..dir
 	end
 	dir_uri = gsub(dir_uri,"/$","")  -- remove trailing '/' if any
---	Http.dir = dir_uri
+	Http.dir = dir_uri
 	function Io.schemes.site(path)
 		return Io.uri( dir_uri..path )
 	end
-	local handler = FileHandler.new(dir_path)
+	local file_handler = FileHandler.new(dir_path)
+	local dir_handler = DirHandler.new(dir_path)
 	local luan_handler = LuanHandler.new()
-	handler = ListHandler.new( luan_handler, handler )
+	local not_found_hander = NotFound.new(luan_handler)
+	local handler = ListHandler.new( luan_handler, file_handler )
 	handler = IndexHandler.new(handler)
-	handler = NotFound.new(handler)
+	handler = ListHandler.new( handler, dir_handler, not_found_hander )
 	handler = ContentTypeHandler.new(handler)
 	handler = SafeHandler.new(handler)
 	handler = LogHandler.new(handler)
---	Server.handlers.addHandler(NotFound.new(Server.luan_handler))
 	Server.server = JavaServer.new(Server.port,handler)
 end