Mercurial Hosting > luan
annotate src/luan/modules/http/LuanDomainHandler.java @ 1806:3b7a8f1cc887 default tip
update discord
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 09 May 2024 20:39:53 -0600 |
parents | 357daf580951 |
children |
rev | line source |
---|---|
1315 | 1 package luan.modules.http; |
2 | |
1402
27efb1fcbcb5
move luan.lib to goodjava
Franklin Schmidt <fschmidt@gmail.com>
parents:
1400
diff
changeset
|
3 import goodjava.webserver.Request; |
27efb1fcbcb5
move luan.lib to goodjava
Franklin Schmidt <fschmidt@gmail.com>
parents:
1400
diff
changeset
|
4 import goodjava.webserver.Response; |
27efb1fcbcb5
move luan.lib to goodjava
Franklin Schmidt <fschmidt@gmail.com>
parents:
1400
diff
changeset
|
5 import goodjava.webserver.Handler; |
27efb1fcbcb5
move luan.lib to goodjava
Franklin Schmidt <fschmidt@gmail.com>
parents:
1400
diff
changeset
|
6 import goodjava.webserver.handlers.DomainHandler; |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1332
diff
changeset
|
7 import luan.Luan; |
1315 | 8 import luan.LuanTable; |
1350 | 9 import luan.LuanFunction; |
1315 | 10 import luan.LuanException; |
1685 | 11 import luan.LuanRuntimeException; |
1454 | 12 import luan.modules.logging.LuanLogger; |
1315 | 13 |
14 | |
1329
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
15 public class LuanDomainHandler implements Handler, DomainHandler.Factory { |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
16 private final DomainHandler domainHandler = new DomainHandler(this); |
1685 | 17 private final LuanFunction init; |
1315 | 18 |
1685 | 19 public LuanDomainHandler(LuanFunction init) throws LuanException { |
20 if(init==null) throw new NullPointerException("init required"); | |
1454 | 21 LuanLogger.initThreadLogging(); |
1685 | 22 this.init = init; |
1315 | 23 } |
24 | |
1329
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
25 @Override public Handler newHandler(String domain) { |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1332
diff
changeset
|
26 Luan luan = newLuan(domain); |
1751
357daf580951
LuanDomainHandler domain check
Franklin Schmidt <fschmidt@gmail.com>
parents:
1685
diff
changeset
|
27 return luan==null ? null : new LuanHandler(luan,domain); |
1329
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
28 } |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
29 |
1350 | 30 protected Luan newLuan(final String domain) { |
1328 | 31 try { |
1685 | 32 Luan luan = new Luan(); |
1751
357daf580951
LuanDomainHandler domain check
Franklin Schmidt <fschmidt@gmail.com>
parents:
1685
diff
changeset
|
33 Object rtn = init.call(luan,domain); |
357daf580951
LuanDomainHandler domain check
Franklin Schmidt <fschmidt@gmail.com>
parents:
1685
diff
changeset
|
34 if( !(rtn instanceof Boolean) ) |
357daf580951
LuanDomainHandler domain check
Franklin Schmidt <fschmidt@gmail.com>
parents:
1685
diff
changeset
|
35 throw new LuanException("init must return boolean"); |
357daf580951
LuanDomainHandler domain check
Franklin Schmidt <fschmidt@gmail.com>
parents:
1685
diff
changeset
|
36 if( !(Boolean)rtn ) |
357daf580951
LuanDomainHandler domain check
Franklin Schmidt <fschmidt@gmail.com>
parents:
1685
diff
changeset
|
37 return null; |
1685 | 38 LuanFunction reset_luan = new LuanFunction() { |
39 @Override public Object call(Luan luan,Object[] args) { | |
40 domainHandler.removeHandler(domain); | |
41 return LuanFunction.NOTHING; | |
42 } | |
43 }; | |
1329
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
44 LuanTable Http = (LuanTable)luan.require("luan:http/Http.luan"); |
1562 | 45 Http.put( luan, "domain", domain ); |
46 Http.put( luan, "reset_luan", reset_luan ); | |
1685 | 47 return luan; |
1329
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
48 } catch(LuanException e) { |
1685 | 49 throw new LuanRuntimeException(e); |
1328 | 50 } |
1329
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
51 } |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
52 |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
53 @Override public Response handle(Request request) { |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
54 return domainHandler.handle(request); |
1315 | 55 } |
56 } |