cripslock

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

commit 172f95116a71744f4588906f813a580e6277b739
parent d55d697d756550a477d17f1f37eaa10c1f38d4f0
Author: Daniel Barlow <dan@telent.net>
Date:   Sun, 20 Jul 2025 21:10:32 +0100

tidy up a bit

Diffstat:
Mmain.fnl | 39++++++++++++++-------------------------
Mserver.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 }