diff --git a/web/client.lisp b/web/client.lisp index ccd2ef0..9b38d9a 100644 --- a/web/client.lisp +++ b/web/client.lisp @@ -31,8 +31,8 @@ (dex:post url :content (data-as-alist (message:data msg))))) (defun msgpath (msg) - (let ((lst (loop for p in (message:head-as-list msg) when p collect p))) - (str:join "/" (mapcar #'string-downcase lst)))) + (str:join "/" (loop for p in (message:head-as-list msg) + when p collect (string-downcase p)))) (defun data-as-alist (data) (if (symbolp (car data)) ; seems to be a property list diff --git a/web/server.lisp b/web/server.lisp index cca9ff4..8a9490c 100644 --- a/web/server.lisp +++ b/web/server.lisp @@ -46,7 +46,7 @@ ;(print env) ;(print (read-line (getf env :raw-body))) (let ((head (head env)) - (data (data env))) + (data (plist (post-data env)))) (format t "~&message head ~s, data ~s~%" head data) '(200 (:content-type "text/plain") ("Hello World!")))) @@ -56,9 +56,8 @@ (when (match (car r) path) (setf (getf env :message-head) (nthcdr (length (car r)) path)) (return-from select-app - #'(lambda () - (apply (cadr r) ctx env (cddr r))))))) - #'(lambda () (message-handler ctx env))) + #'(lambda () (apply (cadr r) ctx env (cddr r))))))) + (message-handler ctx env)) (defun match (pattern path) ;(format t "~&match: pattern ~s, path ~s" pattern path) @@ -83,10 +82,11 @@ (intern (string-upcase s) :keyword)) (defun head (env) - (let ((head (getf env :message-head))) - (mapcar #'(lambda (e) (as-keyword e)) head))) + (mapcar #'(lambda (e) (as-keyword e)) (getf env :message-head))) -(defun data (env) - (let* ((a1 (quri.decode:url-decode-params (read-line (getf env :raw-body)))) - (a2 (mapcar #'(lambda (p) (cons (as-keyword (car p)) (cdr p))) a1))) +(defun post-data (env) + (quri.decode:url-decode-params (read-line (getf env :raw-body)))) + +(defun plist (alst) + (let ((a2 (mapcar #'(lambda (p) (cons (as-keyword (car p)) (cdr p))) alst))) (alx:alist-plist a2)))