web/server: use woo as server component, + fixing stream access; + other fixes

This commit is contained in:
Helmut Merz 2024-06-26 13:47:56 +02:00
parent 10948ef009
commit f248fc9e67
3 changed files with 8 additions and 3 deletions

View file

@ -15,7 +15,7 @@
(defclass action-spec ()
((pattern :reader pattern :initarg :pattern :initform nil)
(handlers :reader handlers :initarg :handlers)))
(handlers :accessor handlers :initarg :handlers)))
(defun select (msg acts)
(let ((h (message:head-as-list msg))

View file

@ -6,7 +6,8 @@
:version "0.0.1"
:homepage "https://www.cyberconcepts.org"
:description "Web client and server functionality."
:depends-on (:clack :dexador :lack :lack-component :lack-app-file :quri
:depends-on (:clack :dexador :flexi-streams
:lack :lack-component :lack-app-file :quri
:scopes-core)
:components ((:file "web/client")
(:file "web/server"))

View file

@ -22,6 +22,7 @@
;;;; listener = server process
(defun app (ctx env)
;(print env)
(funcall (select-app ctx env)))
(defun start (ctx)
@ -30,6 +31,7 @@
(clack:clackup #'(lambda (env) (app ctx env))
:port (parse-integer (port cfg))
:address (address cfg)
:server :woo
:silent t))))
(defun stop (ctx)
@ -86,7 +88,9 @@
(mapcar #'(lambda (e) (as-keyword e)) (getf env :message-head)))
(defun post-data (env)
(quri.decode:url-decode-params (read-line (getf env :raw-body))))
(let* ((raw (getf env :raw-body))
(str (read-line (flexi-streams:make-flexi-stream raw))))
(quri.decode:url-decode-params str)))
(defun plist (alst)
(let ((a2 (mapcar #'(lambda (p) (cons (as-keyword (car p)) (cdr p))) alst)))