29 lines
742 B
Plaintext
29 lines
742 B
Plaintext
|
(local server (require :http.server))
|
||
|
(local headers (require :http.headers))
|
||
|
(local json (require :dkjson))
|
||
|
|
||
|
(fn on-stream [handler sv out]
|
||
|
(let [hdrs (out:get_headers)
|
||
|
method (hdrs:get ":method")
|
||
|
path (or (hdrs:get ":path") "/")
|
||
|
rh (headers.new)]
|
||
|
(rh:append ":status" :200)
|
||
|
(rh:append :content-type :text/plain)
|
||
|
(out:write_headers rh false)
|
||
|
(let [(obj pos err) (json.decode (out:get_body_as_string) 1 nil)
|
||
|
ret (handler obj)]
|
||
|
(out:write_chunk ret true))))
|
||
|
|
||
|
(fn new-server [handler]
|
||
|
(server.listen
|
||
|
{
|
||
|
:host :localhost
|
||
|
:port 8201
|
||
|
:onstream (partial on-stream handler)
|
||
|
}))
|
||
|
|
||
|
{ :new new-server }
|
||
|
|
||
|
;(srv:listen)
|
||
|
;(srv:loop)
|