comparison src/luan/modules/http/impl/Server.luan @ 1160:4beabb087be6

add http/impl
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 05 Feb 2018 22:33:59 -0700
parents src/luan/modules/http/jetty/Server.luan@1b7c20e20ca7
children e2d2354807f3
comparison
equal deleted inserted replaced
1159:3ef883468fd0 1160:4beabb087be6
1 local Luan = require "luan:Luan.luan"
2 local error = Luan.error
3 local String = require "luan:String.luan"
4 local gsub = String.gsub or error()
5 local matches = String.matches or error()
6 local Io = require "luan:Io.luan"
7 local Package = require "luan:Package.luan"
8 local Rpc = require "luan:Rpc.luan"
9 local Thread = require "luan:Thread.luan"
10 --local Http = require "luan:http/Http.luan"
11 require "luan:logging/init.luan" -- initialize logging
12 local Logging = require "luan:logging/Logging.luan"
13 local logger = Logging.logger "http/Server"
14
15 java()
16 local JavaServer = require "java:luan.webserver.Server"
17 local FileHandler = require "java:luan.webserver.handlers.FileHandler"
18 local IndexHandler = require "java:luan.webserver.handlers.IndexHandler"
19 local ContentTypeHandler = require "java:luan.webserver.handlers.ContentTypeHandler"
20 local SafeHandler = require "java:luan.webserver.handlers.SafeHandler"
21 local LogHandler = require "java:luan.webserver.handlers.LogHandler"
22 local ListHandler = require "java:luan.webserver.handlers.ListHandler"
23 local LuanHandler = require "java:luan.modules.http.impl.LuanHandler"
24 local NotFound = require "java:luan.modules.http.impl.NotFound"
25
26
27 local Server = {}
28
29 Server.port = 8080
30
31 function Server.init(dir)
32 matches(dir,"^file:") or error "server dir must be scheme 'file:'"
33 dir = gsub(dir,"/$","") -- remove trailing '/' if any
34 -- Http.dir = dir
35 function Io.schemes.site(path)
36 return Io.uri( dir..path )
37 end
38 local file_dir = Io.uri(dir).to_string()
39 local handler = FileHandler.new(file_dir)
40 local luan_handler = LuanHandler.new()
41 handler = ListHandler.new( luan_handler, handler )
42 handler = IndexHandler.new(handler)
43 handler = NotFound.new(handler)
44 handler = ContentTypeHandler.new(handler)
45 handler = SafeHandler.new(handler)
46 handler = LogHandler.new(handler)
47 -- Server.handlers.addHandler(NotFound.new(Server.luan_handler))
48 Server.server = JavaServer.new(Server.port,handler)
49 end
50
51 function Server.start()
52 LuanHandler.start(Server.server)
53 end
54
55 function Server.start_rpc()
56 function Rpc.functions.call(domain,fn_name,...)
57 return Server.luan_handler.call_rpc(fn_name,...)
58 end
59
60 Thread.fork(Rpc.serve)
61 end
62
63 function Server.serve(dir)
64 Server.init(dir)
65 Server.start_rpc()
66 Server.start()
67 end
68
69 return Server