summaryrefslogtreecommitdiff
path: root/endpoints.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'endpoints.lisp')
-rw-r--r--endpoints.lisp38
1 files changed, 27 insertions, 11 deletions
diff --git a/endpoints.lisp b/endpoints.lisp
index 87fc51e..c9a8612 100644
--- a/endpoints.lisp
+++ b/endpoints.lisp
@@ -25,38 +25,54 @@ NIL if there is no session for the current request.
I.e. It should be called within the scope of a request handler."
(session-with-id (lzb:request-cookie +session-cookie-name+ )))
-(defmacro with-hero-session ((hero &key session (redirect "/tavern-door")) &body body)
+(defmacro with-session ((player &key session (redirect "/game-room")) &body body)
(let ((session (or session (gensym "SESSION"))))
`(a:if-let (,session (current-session))
- (let ((,hero (session-hero ,session)))
+ (let ((,player (session-player ,session)))
,@body)
(redirect-to ,redirect))))
;;; OPEN ENDPOINTS
+
(defendpoint* :get "/" () ()
(redirect-to "/tavern-door"))
(defendpoint* :get "/tavern-door" () ()
- (a:if-let (name (flashed-value :tavern-door))
- (doorkeeper :message (format nil "M'fraid I've n'er 'eard o' ~a." name))
+ (a:if-let (name (flashed-value :game-room))
+ (doorkeeper :message (format nil "Ne'er 'erd of ye ~a" name))
(doorkeeper)))
(defendpoint* :post "/tavern-door" () ()
- (with-plist ((name :name)) (lzb:request-body)
- (a:if-let ((hero (hero-known-as name)))
- (a:when-let ((sesh (new-sesh hero)))
+ (with-plist ((nick :nick)) (lzb:request-body)
+ (a:if-let ((player (player-with-nick (string-trim " " nick))))
+ (a:when-let ((sesh (new-sesh player)))
(lzb:set-response-cookie +session-cookie-name+ (session-id sesh)
:path "/" :domain "localhost") ; TODO: generalize domain
(redirect-to "/tavern"))
(progn
- (flash :tavern-door name)
- (redirect-to (format nil "/tavern-door"))))))
+ (flash :game-room nick)
+ (redirect-to "/tavern-door")))) )
+
+(defendpoint* :get "/register" () ()
+ (register))
+
+(defun check-valid-nick (name)
+ "Errors with 400 if the name is not a valid hero name."
+ (unless (valid-nick-p name)
+ (lzb:http-err 400 (format nil "Player Nick Invalid"))))
+
+(defendpoint* :post "/register" () ()
+ (with-plist ((nick :nick)) (lzb:request-body)
+ (check-valid-nick nick)
+ (register-player nick)
+ (redirect-to "/tavern-door")))
(defendpoint* :get "/godess-shrine" () ()
(godess-shrine))
+
(defendpoint* :post "/godess-shrine" () ()
(with-plist ((name :name)) (lzb:request-body)
(birth-from-the-goddess-loins name)
@@ -65,5 +81,5 @@ I.e. It should be called within the scope of a request handler."
;;; SESSION ENDPOINTS
(defendpoint* :get "/tavern" () ()
- (with-hero-session (hero)
- (tavern hero)))
+ (with-session (player)
+ (tavern player)))