cripslock

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

commit 60f244215a71ef6088869b29827cd9bf166ceba0
parent 47867b0c69265a4b21aaac19c042ac2bf23cc967
Author: Daniel Barlow <dan@telent.net>
Date:   Sun, 20 Jul 2025 20:13:31 +0100

extract server creation into its own module

Diffstat:
Mmain.fnl | 27++++-----------------------
Aserver.fnl | 31+++++++++++++++++++++++++++++++
2 files changed, 35 insertions(+), 23 deletions(-)

diff --git a/main.fnl b/main.fnl @@ -1,13 +1,13 @@ (import-macros { : define-tests : expect : expect= } :assert) (local lfs (require :lfs)) - - (local new-headers (. (require :http.headers) :new)) (local http-server (require :http.server)) (local http-util (require :http.util)) (local http-version (require :http.version)) (local ce (require :cqueues.errno)) +(local server (require :server)) + (local { : view } (require :fennel)) (fn frontmatter [stream] @@ -228,27 +228,8 @@ (res-headers:upsert ":status" :404) (assert (stream:write_headers res-headers true))))))) - -(let [myserver - (doto - (http-server.listen - {:host :localhost - :max_concurrent 100 - :onerror (fn [myserver context op err errno] - (let [msg - (.. op " on " - (tostring context) - " failed" - (and err - (.. ": " - (tostring err))))] - (assert (io.stderr:write msg "\n")))) - :onstream reply - :port 3003}) - (: :listen)) - (_family address port) (myserver:localname)] - (print :listening-on address port) - (assert (myserver:loop))) +(let [myserver (server.new { :onstream reply } )] + (myserver:loop)) ;; (print (view (index-posts "data/blogs/telent.blog/posts/"))) diff --git a/server.fnl b/server.fnl @@ -0,0 +1,31 @@ +(local new-headers (. (require :http.headers) :new)) +(local http-server (require :http.server)) +(local http-util (require :http.util)) +(local http-version (require :http.version)) +(local ce (require :cqueues.errno)) + +(fn new [options] + (let [defaults + {:host :localhost + :max_concurrent 100 + :onerror (fn [myserver context op err errno] + (let [msg + (.. op " on " + (tostring context) + " failed" + (and err + (.. ": " + (tostring err))))] + (assert (io.stderr:write msg "\n")))) + :port 3003} + params (collect [k v (pairs options) &into defaults] + (values k v)) + server + (doto + (http-server.listen params) + (: :listen)) + (_family address port) (server:localname)] + (print :listening-on address port) + (values server address port))) + +{ : new }