lua hello-world HTTP server
This commit is contained in:
commit
f75b8bd59a
|
@ -0,0 +1,13 @@
|
|||
with import <nixpkgs> {};
|
||||
let lua = lua5_3.withPackages (ps: [
|
||||
ps.dkjson
|
||||
ps.lpeg
|
||||
ps.http
|
||||
ps.luaposix
|
||||
]);
|
||||
in stdenv.mkDerivation {
|
||||
pname = "grafana-sms-alert";
|
||||
version = "0.1";
|
||||
src = ./.;
|
||||
buildInputs = [lua (fennel.override { inherit lua; }) ];
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
(local server (require :server))
|
||||
(local { : view } (require :fennel))
|
||||
|
||||
(fn handler [payload]
|
||||
(print (view payload))
|
||||
"OK")
|
||||
|
||||
|
||||
(doto (server.new handler)
|
||||
(: :listen)
|
||||
(: :loop))
|
||||
|
||||
(io.stdin:read)
|
|
@ -0,0 +1,30 @@
|
|||
(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)
|
||||
(print "got oune" handler)
|
||||
(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)
|
Loading…
Reference in New Issue