comparison 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
comparison
equal deleted inserted replaced
1166:7ef40e1923b7 1167:7e6f28c769a1
6 local matches = String.matches or error() 6 local matches = String.matches or error()
7 local Io = require "luan:Io.luan" 7 local Io = require "luan:Io.luan"
8 local Package = require "luan:Package.luan" 8 local Package = require "luan:Package.luan"
9 local Rpc = require "luan:Rpc.luan" 9 local Rpc = require "luan:Rpc.luan"
10 local Thread = require "luan:Thread.luan" 10 local Thread = require "luan:Thread.luan"
11 --local Http = require "luan:http/Http.luan" 11 local Http = require "luan:http/Http.luan"
12 require "luan:logging/init.luan" -- initialize logging 12 require "luan:logging/init.luan" -- initialize logging
13 local Logging = require "luan:logging/Logging.luan" 13 local Logging = require "luan:logging/Logging.luan"
14 local logger = Logging.logger "http/Server" 14 local logger = Logging.logger "http/Server"
15 15
16 java() 16 java()
17 local JavaServer = require "java:luan.webserver.Server" 17 local JavaServer = require "java:luan.webserver.Server"
18 local FileHandler = require "java:luan.webserver.handlers.FileHandler" 18 local FileHandler = require "java:luan.webserver.handlers.FileHandler"
19 local DirHandler = require "java:luan.webserver.handlers.DirHandler"
19 local IndexHandler = require "java:luan.webserver.handlers.IndexHandler" 20 local IndexHandler = require "java:luan.webserver.handlers.IndexHandler"
20 local ContentTypeHandler = require "java:luan.webserver.handlers.ContentTypeHandler" 21 local ContentTypeHandler = require "java:luan.webserver.handlers.ContentTypeHandler"
21 local SafeHandler = require "java:luan.webserver.handlers.SafeHandler" 22 local SafeHandler = require "java:luan.webserver.handlers.SafeHandler"
22 local LogHandler = require "java:luan.webserver.handlers.LogHandler" 23 local LogHandler = require "java:luan.webserver.handlers.LogHandler"
23 local ListHandler = require "java:luan.webserver.handlers.ListHandler" 24 local ListHandler = require "java:luan.webserver.handlers.ListHandler"
37 else 38 else
38 dir_path = dir 39 dir_path = dir
39 dir_uri = "file:"..dir 40 dir_uri = "file:"..dir
40 end 41 end
41 dir_uri = gsub(dir_uri,"/$","") -- remove trailing '/' if any 42 dir_uri = gsub(dir_uri,"/$","") -- remove trailing '/' if any
42 -- Http.dir = dir_uri 43 Http.dir = dir_uri
43 function Io.schemes.site(path) 44 function Io.schemes.site(path)
44 return Io.uri( dir_uri..path ) 45 return Io.uri( dir_uri..path )
45 end 46 end
46 local handler = FileHandler.new(dir_path) 47 local file_handler = FileHandler.new(dir_path)
48 local dir_handler = DirHandler.new(dir_path)
47 local luan_handler = LuanHandler.new() 49 local luan_handler = LuanHandler.new()
48 handler = ListHandler.new( luan_handler, handler ) 50 local not_found_hander = NotFound.new(luan_handler)
51 local handler = ListHandler.new( luan_handler, file_handler )
49 handler = IndexHandler.new(handler) 52 handler = IndexHandler.new(handler)
50 handler = NotFound.new(handler) 53 handler = ListHandler.new( handler, dir_handler, not_found_hander )
51 handler = ContentTypeHandler.new(handler) 54 handler = ContentTypeHandler.new(handler)
52 handler = SafeHandler.new(handler) 55 handler = SafeHandler.new(handler)
53 handler = LogHandler.new(handler) 56 handler = LogHandler.new(handler)
54 -- Server.handlers.addHandler(NotFound.new(Server.luan_handler))
55 Server.server = JavaServer.new(Server.port,handler) 57 Server.server = JavaServer.new(Server.port,handler)
56 end 58 end
57 59
58 function Server.start() 60 function Server.start()
59 LuanHandler.start(Server.server) 61 LuanHandler.start(Server.server)