From 89d0d687992b41f7f0f9b0d3da19d9d587f06010 Mon Sep 17 00:00:00 2001 From: Grant Shoshin Shangreaux Date: Sun, 5 Mar 2023 11:33:08 -0600 Subject: Add: page-render-mode, model cleanup, tavern view wip --- endpoints.lisp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'endpoints.lisp') diff --git a/endpoints.lisp b/endpoints.lisp index 4cd9aef..96e3876 100644 --- a/endpoints.lisp +++ b/endpoints.lisp @@ -53,6 +53,13 @@ I.e. It should be called within the scope of a request handler." "Returns T if user agent string matches on a list of known text browsers." (some (lambda (s) (search s user-agent)) '("Emacs" "Lynx" "w3m"))) +(defun page-render-mode (user-agent) + "Given the USER-AGENT string from request headers, returns a symbol which +indicates which render mode to use. For example if Emacs is the user-agent, +return :text-12mode." + (cond ((text-browser-p user-agent) :text-page) + (t :page))) + (defmacro with-session ((player &key session (redirect "/tavern-door")) &body body) (let ((session (or session (gensym "SESSION")))) `(a:if-let (,session (current-session)) @@ -129,9 +136,8 @@ functions in url parameters in endpoint definitions." (defendpoint* :get "/tavern" () () (with-session (me) - (if (text-browser-p (lzb:request-header :user-agent)) - (tavern-text me) - (tavern me)))) + (render (page-render-mode (lzb:request-header :user-agent)) + (make-instance 'tavern :player me)))) (defendpoint* :get "/godess-shrine" () () (with-session (player) -- cgit v1.2.3