Mercurial Hosting > luan
annotate 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 |
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() |
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
5 local matches = String.matches or error() |
693
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
629
diff
changeset
|
6 local Io = require "luan:Io.luan" |
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
629
diff
changeset
|
7 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
|
8 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
|
9 local Thread = require "luan:Thread.luan" |
1160 | 10 --local Http = require "luan:http/Http.luan" |
693
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
629
diff
changeset
|
11 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
|
12 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
|
13 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
|
14 |
321
7f7708e8fdd4
remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
320
diff
changeset
|
15 java() |
1160 | 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 | |
174
609c5b3118db
add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
26 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
27 local Server = {} |
174
609c5b3118db
add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
28 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
29 Server.port = 8080 |
174
609c5b3118db
add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
30 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
31 function Server.init(dir) |
1160 | 32 matches(dir,"^file:") or error "server dir must be scheme 'file:'" |
539
473e456444ff
Remove object-oriented primitive methods for string and binary
Franklin Schmidt <fschmidt@gmail.com>
parents:
532
diff
changeset
|
33 dir = gsub(dir,"/$","") -- remove trailing '/' if any |
1160 | 34 -- Http.dir = dir |
693
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
629
diff
changeset
|
35 function Io.schemes.site(path) |
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
629
diff
changeset
|
36 return Io.uri( dir..path ) |
264
9e0d4452e649
implement URL style module names
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
37 end |
1160 | 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) | |
303
fdb4bd391c28
add lucene close();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
300
diff
changeset
|
49 end |
fdb4bd391c28
add lucene close();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
300
diff
changeset
|
50 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
51 function Server.start() |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
52 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
|
53 end |
a50e88d3547c
add Web_server.init();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
282
diff
changeset
|
54 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
55 function Server.start_rpc() |
743
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
56 function Rpc.functions.call(domain,fn_name,...) |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
57 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
|
58 end |
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
59 |
762
3f461f85243d
better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents:
753
diff
changeset
|
60 Thread.fork(Rpc.serve) |
743
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
61 end |
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
62 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
63 function Server.serve(dir) |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
64 Server.init(dir) |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
65 Server.start_rpc() |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
66 Server.start() |
174
609c5b3118db
add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
67 end |
503 | 68 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
69 return Server |