summaryrefslogtreecommitdiff
path: root/endpoints.lisp
diff options
context:
space:
mode:
authorGrant Shoshin Shangreaux <shoshin@cicadas.surf>2023-03-05 11:33:08 -0600
committerGrant Shoshin Shangreaux <shoshin@cicadas.surf>2023-03-05 11:33:08 -0600
commit89d0d687992b41f7f0f9b0d3da19d9d587f06010 (patch)
tree8d1dabc9cf9c79358b16c23959681fc299219e57 /endpoints.lisp
parent04df19a88a381e6bdc60d7f566e02e99b40c0087 (diff)
Add: page-render-mode, model cleanup, tavern view wip
Diffstat (limited to 'endpoints.lisp')
-rw-r--r--endpoints.lisp12
1 files changed, 9 insertions, 3 deletions
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)