summaryrefslogtreecommitdiff
path: root/endpoints.lisp
diff options
context:
space:
mode:
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)