2021-05-10 13:23:30 +00:00
|
|
|
url = require "net.url"
|
|
|
|
|
|
|
|
class Server
|
|
|
|
new: (cq, hdlr) =>
|
|
|
|
@cq = cq
|
|
|
|
@hdlr = hdlr
|
|
|
|
|
|
|
|
listen: (srv) =>
|
|
|
|
@cq\wrap ->
|
|
|
|
for conn in srv\clients!
|
|
|
|
@cq\wrap ->
|
|
|
|
with conn
|
|
|
|
_, ip = \peername!
|
|
|
|
request = \read "*l"
|
|
|
|
u = url.parse request
|
|
|
|
ctx =
|
|
|
|
:ip
|
|
|
|
host: u.host
|
|
|
|
path: u.path
|
|
|
|
query: u.query
|
2021-05-10 14:13:42 +00:00
|
|
|
@hdlr\serve ctx, conn
|
2021-05-10 13:23:30 +00:00
|
|
|
\close!
|
|
|
|
|
2021-05-10 14:13:42 +00:00
|
|
|
{
|
|
|
|
:Server
|
|
|
|
}
|