lua hello-world HTTP server

main
Daniel Barlow 9 months ago
commit f75b8bd59a
  1. 13
      default.nix
  2. 13
      main.fnl
  3. 30
      server.fnl

@ -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…
Cancel
Save