commit f75b8bd59affc0e15ecad09372827c87eae9a93f Author: Daniel Barlow Date: Tue Sep 13 20:55:15 2022 +0100 lua hello-world HTTP server diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..011bc7b --- /dev/null +++ b/default.nix @@ -0,0 +1,13 @@ +with import {}; +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; }) ]; +} diff --git a/main.fnl b/main.fnl new file mode 100644 index 0000000..93a14f2 --- /dev/null +++ b/main.fnl @@ -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) diff --git a/server.fnl b/server.fnl new file mode 100644 index 0000000..0ee1071 --- /dev/null +++ b/server.fnl @@ -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)