commit 172f95116a71744f4588906f813a580e6277b739 parent d55d697d756550a477d17f1f37eaa10c1f38d4f0 Author: Daniel Barlow <dan@telent.net> Date: Sun, 20 Jul 2025 21:10:32 +0100 tidy up a bit Diffstat:
| M | main.fnl | | | 39 | ++++++++++++++------------------------- |
| M | server.fnl | | | 8 | +++++++- |
2 files changed, 21 insertions(+), 26 deletions(-)
diff --git a/main.fnl b/main.fnl @@ -192,41 +192,30 @@ (stream:write_body_from_string (dispatch route)))) -(fn log-request [req-method req-headers stream] +(fn log-request [req-headers stream] (assert (io.stdout:write (string.format "[%s] \"%s %s HTTP/%g\" \"%s\" \"%s\"\n" (os.date "%d/%b/%Y:%H:%M:%S %z") - (or req-method "") + (or (req-headers:get ":method") "") (or (req-headers:get ":path") "") stream.connection.version (or (req-headers:get :referer) "-") (or (req-headers:get :user-agent) "-"))))) -(fn reply [myserver stream] +(fn reply [_ stream] (let [req-headers (assert (stream:get_headers)) - req-method (req-headers:get ":method") - res-headers (new-headers)] - (doto res-headers - (: :append ":status" nil) - (: :append :server (string.format "%s/%s" http-version.name http-version.version)) - (: :append :date (http-util.imf_date))) - - (log-request req-method req-headers stream) - - (let [path (req-headers:get ":path") - route (route-request path)] - (if (and (not= req-method :GET) (not= req-method :HEAD)) - (do - (res-headers:upsert ":status" :405) - (assert (stream:write_headers res-headers true))) - - route - (response-for-route res-headers req-method stream route) - - (do - (res-headers:upsert ":status" :404) - (assert (stream:write_headers res-headers true))))))) + path (req-headers:get ":path") + method (req-headers:get ":method") + res-headers (server.default-headers) + route (route-request method path)] + (log-request req-headers stream) + (if route + (response-for-route res-headers method stream route) + (do + (res-headers:upsert ":status" :404) + (assert (stream:write_headers res-headers true)))))) + (fn run [] (let [index (index-posts "data/blogs/telent.blog/posts/") diff --git a/server.fnl b/server.fnl @@ -4,6 +4,12 @@ (local http-version (require :http.version)) (local ce (require :cqueues.errno)) +(fn default-headers [] + (doto (new-headers) + (: :append ":status" nil) + (: :append :server (string.format "%s/%s" http-version.name http-version.version)) + (: :append :date (http-util.imf_date)))) + (fn new [options] (let [defaults {:host :localhost @@ -28,4 +34,4 @@ (print :listening-on address port) (values server address port))) -{ : new } +{ : new : default-headers }