commit f75b8bd59affc0e15ecad09372827c87eae9a93f Author: Daniel Barlow <dan@telent.net> Date: Tue, 13 Sep 2022 20:55:15 +0100 lua hello-world HTTP server Diffstat:
| A | default.nix | | | 13 | +++++++++++++ |
| A | main.fnl | | | 13 | +++++++++++++ |
| A | server.fnl | | | 30 | ++++++++++++++++++++++++++++++ |
3 files changed, 56 insertions(+), 0 deletions(-)
diff --git a/default.nix b/default.nix @@ -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; }) ]; +} diff --git a/main.fnl 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 @@ -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)