grafana-sms-alert

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit f75b8bd59affc0e15ecad09372827c87eae9a93f
Author: Daniel Barlow <dan@telent.net>
Date:   Tue, 13 Sep 2022 20:55:15 +0100

lua hello-world HTTP server

Diffstat:
Adefault.nix | 13+++++++++++++
Amain.fnl | 13+++++++++++++
Aserver.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)