diff src/luan/modules/http/Server.luan @ 1136:d30d400fd43d

add http/jetty
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 29 Jan 2018 17:50:49 -0700
parents 1fcf5c25b3bd
children 3a0f58d09ee7
line wrap: on
line diff
--- a/src/luan/modules/http/Server.luan	Sun Jan 28 21:36:58 2018 -0700
+++ b/src/luan/modules/http/Server.luan	Mon Jan 29 17:50:49 2018 -0700
@@ -1,119 +1,2 @@
-local Luan = require "luan:Luan.luan"
-local error = Luan.error
-local String = require "luan:String.luan"
-local gsub = String.gsub or error()
-local matches = String.matches or error()
-local Io = require "luan:Io.luan"
-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"
-require "luan:logging/init.luan"  -- initialize logging
-local Logging = require "luan:logging/Logging.luan"
-local logger = Logging.logger "http/Server"
-
-java()
-local TimeZone = require "java:java.util.TimeZone"
-local JavaServer = require "java:org.eclipse.jetty.server.Server"
-local NCSARequestLog = require "java:org.eclipse.jetty.server.NCSARequestLog"
-local DefaultHandler = require "java:org.eclipse.jetty.server.handler.DefaultHandler"
-local HandlerList = require "java:org.eclipse.jetty.server.handler.HandlerList"
-local HandlerCollection = require "java:org.eclipse.jetty.server.handler.HandlerCollection"
-local ResourceHandler = require "java:org.eclipse.jetty.server.handler.ResourceHandler"
-local RequestLogHandler = require "java:org.eclipse.jetty.server.handler.RequestLogHandler"
-local ContextHandler = require "java:org.eclipse.jetty.server.handler.ContextHandler"
-local GzipHandler = require "java:org.eclipse.jetty.server.handler.GzipHandler"
-local HandlerWrapper = require "java:org.eclipse.jetty.server.handler.HandlerWrapper"
-local SessionHandler = require "java:org.eclipse.jetty.server.session.SessionHandler"
-local AuthenticationHandler = require "java:luan.modules.http.AuthenticationHandler"
-local LuanHandler = require "java:luan.modules.http.LuanHandler"
-local NotFound = require "java:luan.modules.http.NotFound"
-
-local Server = {}
-
-Server.port = 8080
-
-Server.welcome_file = "index.html"
-
-
-Server.authentication_handler = AuthenticationHandler.new("/private/")
-
-Server.luan_handler = LuanHandler.new()
-
-Server.resource_handler = ResourceHandler.new()
-Server.resource_handler.setDirectoriesListed(true)
-
-Server.handlers = HandlerList.new()
-Server.handlers.setHandlers { Server.authentication_handler, Server.luan_handler, Server.resource_handler }
-
-function Server.add_folder(context,dir)
-	local rh = ResourceHandler.new()
-	rh.setResourceBase(dir)
-	rh.setDirectoriesListed(true)
-	local ch = ContextHandler.new(context)
-	ch.setHandler(rh)
-	Server.handlers.addHandler(ch)
-	return rh
-end
-
-Server.handler_wrapper = HandlerWrapper.new()
-Server.handler_wrapper.setHandler(Server.handlers)
-
-function Server.zip()
-	local h = GzipHandler.new()
-	h.setHandler(Server.handler_wrapper.getHandler())
-	Server.handler_wrapper.setHandler(h)
-end
-
-Server.log = NCSARequestLog.new()
-Server.log.setExtended(false)
-Server.log.setLogTimeZone(TimeZone.getDefault().getID())
-Server.log_handler = RequestLogHandler.new()
-Server.log_handler.setRequestLog(Server.log)
-
-function Server.set_log_file(file_name)
-	Server.log.setFilename(file_name)
-end
-
-local hc = HandlerCollection.new()
-hc.setHandlers { SessionHandler.new(), Server.handler_wrapper, DefaultHandler.new(), Server.log_handler }
-
-
-function Server.init(dir)
-	dir = gsub(dir,"/$","")  -- remove trailing '/' if any
-	Http.dir = dir
-	function Io.schemes.site(path)
-		return Io.uri( dir..path )
-	end
-	Server.authentication_handler.setPassword(Io.password)
-	local base = dir
-	if matches(base,"^classpath:") then
-		base = dir.."#"..Server.welcome_file.."#"..Server.welcome_file..".luan"
-	end
-	Server.resource_handler.setResourceBase(Io.uri(base).to_string())
-	Server.resource_handler.setWelcomeFiles {Server.welcome_file}
-	Server.luan_handler.setWelcomeFile(Server.welcome_file)
-	Server.handlers.addHandler(NotFound.new(Server.luan_handler))
-	Server.server = JavaServer.new(Server.port)
-	Server.server.setHandler(hc)
-end
-
-function Server.start()
-	LuanHandler.start(Server.server)
-end
-
-function Server.start_rpc()
-	function Rpc.functions.call(domain,fn_name,...)
-		return Server.luan_handler.call_rpc(fn_name,...)
-	end
-
-	Thread.fork(Rpc.serve)
-end
-
-function Server.serve(dir)
-	Server.init(dir)
-	Server.start_rpc()
-	Server.start()
-end
-
-return Server
+local Implementation = require "luan:http/Implementation.luan"
+return require(Implementation.luan.."Server.luan")