annotate src/luan/modules/http/impl/Server.luan @ 1162:e2d2354807f3

minor
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 06 Feb 2018 21:25:55 -0700
parents 4beabb087be6
children 7e6f28c769a1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 712
diff changeset
1 local Luan = require "luan:Luan.luan"
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 712
diff changeset
2 local error = Luan.error
693
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 629
diff changeset
3 local String = require "luan:String.luan"
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 712
diff changeset
4 local gsub = String.gsub or error()
1162
Franklin Schmidt <fschmidt@gmail.com>
parents: 1160
diff changeset
5 local match = String.match or error()
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 712
diff changeset
6 local matches = String.matches or error()
693
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 629
diff changeset
7 local Io = require "luan:Io.luan"
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 629
diff changeset
8 local Package = require "luan:Package.luan"
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 712
diff changeset
9 local Rpc = require "luan:Rpc.luan"
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 712
diff changeset
10 local Thread = require "luan:Thread.luan"
1160
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
11 --local Http = require "luan:http/Http.luan"
693
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 629
diff changeset
12 require "luan:logging/init.luan" -- initialize logging
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 712
diff changeset
13 local Logging = require "luan:logging/Logging.luan"
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 712
diff changeset
14 local logger = Logging.logger "http/Server"
174
609c5b3118db add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
15
321
7f7708e8fdd4 remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 320
diff changeset
16 java()
1160
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
17 local JavaServer = require "java:luan.webserver.Server"
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
18 local FileHandler = require "java:luan.webserver.handlers.FileHandler"
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
19 local IndexHandler = require "java:luan.webserver.handlers.IndexHandler"
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
20 local ContentTypeHandler = require "java:luan.webserver.handlers.ContentTypeHandler"
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
21 local SafeHandler = require "java:luan.webserver.handlers.SafeHandler"
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
22 local LogHandler = require "java:luan.webserver.handlers.LogHandler"
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
23 local ListHandler = require "java:luan.webserver.handlers.ListHandler"
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
24 local LuanHandler = require "java:luan.modules.http.impl.LuanHandler"
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
25 local NotFound = require "java:luan.modules.http.impl.NotFound"
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
26
174
609c5b3118db add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
27
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 1080
diff changeset
28 local Server = {}
174
609c5b3118db add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
29
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 1080
diff changeset
30 Server.port = 8080
174
609c5b3118db add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
31
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 1080
diff changeset
32 function Server.init(dir)
1162
Franklin Schmidt <fschmidt@gmail.com>
parents: 1160
diff changeset
33 local dir_uri, dir_path
Franklin Schmidt <fschmidt@gmail.com>
parents: 1160
diff changeset
34 if matches(dir,":") then
Franklin Schmidt <fschmidt@gmail.com>
parents: 1160
diff changeset
35 dir_uri = dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1160
diff changeset
36 dir_path = match(dir,"^file:(.*)$") or error "server dir must be scheme 'file:'"
Franklin Schmidt <fschmidt@gmail.com>
parents: 1160
diff changeset
37 else
Franklin Schmidt <fschmidt@gmail.com>
parents: 1160
diff changeset
38 dir_path = dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1160
diff changeset
39 dir_uri = "file:"..dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1160
diff changeset
40 end
Franklin Schmidt <fschmidt@gmail.com>
parents: 1160
diff changeset
41 dir_uri = gsub(dir_uri,"/$","") -- remove trailing '/' if any
Franklin Schmidt <fschmidt@gmail.com>
parents: 1160
diff changeset
42 -- Http.dir = dir_uri
693
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 629
diff changeset
43 function Io.schemes.site(path)
1162
Franklin Schmidt <fschmidt@gmail.com>
parents: 1160
diff changeset
44 return Io.uri( dir_uri..path )
264
9e0d4452e649 implement URL style module names
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 260
diff changeset
45 end
1162
Franklin Schmidt <fschmidt@gmail.com>
parents: 1160
diff changeset
46 local handler = FileHandler.new(dir_path)
1160
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
47 local luan_handler = LuanHandler.new()
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
48 handler = ListHandler.new( luan_handler, handler )
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
49 handler = IndexHandler.new(handler)
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
50 handler = NotFound.new(handler)
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
51 handler = ContentTypeHandler.new(handler)
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
52 handler = SafeHandler.new(handler)
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
53 handler = LogHandler.new(handler)
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
54 -- Server.handlers.addHandler(NotFound.new(Server.luan_handler))
4beabb087be6 add http/impl
Franklin Schmidt <fschmidt@gmail.com>
parents: 1149
diff changeset
55 Server.server = JavaServer.new(Server.port,handler)
303
fdb4bd391c28 add lucene close();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 300
diff changeset
56 end
fdb4bd391c28 add lucene close();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 300
diff changeset
57
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 1080
diff changeset
58 function Server.start()
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 1080
diff changeset
59 LuanHandler.start(Server.server)
293
a50e88d3547c add Web_server.init();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 282
diff changeset
60 end
a50e88d3547c add Web_server.init();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 282
diff changeset
61
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 1080
diff changeset
62 function Server.start_rpc()
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 712
diff changeset
63 function Rpc.functions.call(domain,fn_name,...)
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 1080
diff changeset
64 return Server.luan_handler.call_rpc(fn_name,...)
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 712
diff changeset
65 end
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 712
diff changeset
66
762
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 753
diff changeset
67 Thread.fork(Rpc.serve)
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 712
diff changeset
68 end
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 712
diff changeset
69
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 1080
diff changeset
70 function Server.serve(dir)
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 1080
diff changeset
71 Server.init(dir)
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 1080
diff changeset
72 Server.start_rpc()
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 1080
diff changeset
73 Server.start()
174
609c5b3118db add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
74 end
503
92c3d22745b8 make _ENV optional
Franklin Schmidt <fschmidt@gmail.com>
parents: 494
diff changeset
75
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 1080
diff changeset
76 return Server