From 5d27e99bb7bced54806a105019bfdcda60350ab3 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Fri, 12 Jul 2024 08:14:12 +0200 Subject: [PATCH] web/server: work in progress: render response --- web/server.lisp | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/web/server.lisp b/web/server.lisp index de2d6e6..437f6e4 100644 --- a/web/server.lisp +++ b/web/server.lisp @@ -87,16 +87,13 @@ (log:debug "msg ~s" msg) ; (check-auth ctx msg env) => (render-unauthorized ctx msg env) (if (core:handle-message ctx msg) - ;(render ctx (message resp) env) - (list 200 (headers resp) (list (body resp))) - (list 404 '(:content-type "text/plain") '("Not found"))))) - ;(render-not-found ctx env) + (render ctx (message resp) env) + (render-not-found ctx env)))) -;;;; server response - provide response data for rendering body and headers +;;;; server response - provide response data and render body and headers (defclass response () - ((message :accessor message :initform nil) - (headers :accessor headers :initform '(:content-type "text/plain")))) + ((message :accessor message :initform nil))) (defmethod print-object ((r response) s) (format s "" (message r))) @@ -105,16 +102,18 @@ (log:debug "receiving ~s" msg) (setf (message r) msg)) -(defgeneric body (r) - (:method ((r response)) - (getf (message:data (message r)) :info))) - (defun render (ctx msg env) - ; process special message headers, e.g. (:system :error ...) - ; => set status code, provide additional data elements - ; (gethash "accept" (getf env :headers)) => select output format - ; set headers, render body - ) + (let ((headers '(:content-type "text/plain")) + (rcode 200) + (content (getf (message:data msg) :info))) + ; process special message heads, e.g. (:system :error ...) + ; => set status code, provide additional data elements + ; (gethash "accept" (getf env :headers)) => select output format + ; set headers, render body + (list rcode headers (list content)))) + +(defun render-not-found(ctx env) + (list 404 '(:content-type "text/plain") '("Not found"))) ;;;; helper functions