4 module("luci.httpd", package.seeall)
6 require("luci.http.protocol")
12 -- TODO: process config
13 local server = socket.bind("0.0.0.0", 8080)
14 copas.addserver(server, spawnworker)
22 function spawnworker(socket)
23 socket = copas.wrap(socket)
24 local request = luci.http.protocol.parse_message_header(socket)
25 request.input = socket -- TODO: replace with streamreader
26 request.error = io.stderr
29 local output = socket -- TODO: replace with streamwriter
31 -- TODO: detect matching handler
32 local h = luci.httpd.FileHandler.SimpleHandler(luci.sys.libpath() .. "/httpd/httest")
33 h:process(request, output)
37 Response = luci.util.class()
38 function Response.__init__(self, sourceout, headers, status)
39 self.sourceout = sourceout or function() end
40 self.headers = headers or {}
41 self.status = status or 200
44 function Response.addheader(self, key, value)
45 self.headers[key] = value
48 function Response.setstatus(self, status)
52 function Response.setsource(self, source)
53 self.sourceout = source
57 Handler = luci.util.class()
58 function Handler.__init__(self)
62 function Handler.addfilter(self, filter)
63 table.insert(self.filter, filter)
66 function Handler.process(self, request, output)
67 -- TODO: Process input filters
69 local response = self:handle(request)
71 -- TODO: Process output filters
73 output:send("HTTP/1.0 " .. response.status .. " BLA\r\n")
74 for k, v in pairs(response.headers) do
75 output:send(k .. ": " .. v .. "\r\n")
80 for chunk in response.sourceout do