summaryrefslogtreecommitdiff
path: root/haunt/jakob/dynamic/capabilities/rsvp.scm
diff options
context:
space:
mode:
Diffstat (limited to 'haunt/jakob/dynamic/capabilities/rsvp.scm')
-rw-r--r--haunt/jakob/dynamic/capabilities/rsvp.scm93
1 files changed, 37 insertions, 56 deletions
diff --git a/haunt/jakob/dynamic/capabilities/rsvp.scm b/haunt/jakob/dynamic/capabilities/rsvp.scm
index d7d6fb9..e29d5fb 100644
--- a/haunt/jakob/dynamic/capabilities/rsvp.scm
+++ b/haunt/jakob/dynamic/capabilities/rsvp.scm
@@ -18,6 +18,7 @@
#:use-module (gcrypt base64)
#:use-module (ice-9 binary-ports)
#:use-module (ice-9 match)
+ #:use-module (jakob dynamic errors)
#:use-module (jakob dynamic util)
#:use-module (json)
#:use-module (rnrs bytevectors)
@@ -101,31 +102,24 @@ It is a base64 string, encoding `%vanity-length' bytes of randomness."
(define (create-new-event-rsvp params)
"Handler for RSVP'ing to an event."
(let ((params (params->rsvp-create params)))
- (cond ((not params)
- (values (build-response #:code 400)
- (scm->json-string
- `((success . #f)
- (error . "Invalid form data")))))
- ((not (valid-invite-code (rsvp-create-code params)))
- (values (build-response #:code 400)
- (scm->json-string
- `((success . #f)
- (error . "Invalid invitation code")))))
- (else
- (let ((receipt-code (generate-vanity-code))
- (event-id (car (invitation->event-id (rsvp-create-code params)))))
- (exec-query conn
- "INSERT INTO rsvps (vanity, invitation_id, event_id, fullname, email, attending, guests) VALUES ($1, $2, $3, $4, $5, $6, $7)"
- (list receipt-code
- (rsvp-create-code params)
- event-id
- (rsvp-create-name params)
- (rsvp-create-email params)
- (rsvp-create-attending params)
- (rsvp-create-guests params)))
- (values '((content-type . (application/json)))
- (scm->json-string
- `((receipt . ,receipt-code)))))))))
+ (unless params
+ (panic "invalid form data"))
+ (unless (valid-invite-code (rsvp-create-code params))
+ (panic "invalid invitation code"))
+ (let ((receipt-code (generate-vanity-code))
+ (event-id (car (invitation->event-id (rsvp-create-code params)))))
+ (exec-query conn
+ "INSERT INTO rsvps (vanity, invitation_id, event_id, fullname, email, attending, guests) VALUES ($1, $2, $3, $4, $5, $6, $7)"
+ (list receipt-code
+ (rsvp-create-code params)
+ event-id
+ (rsvp-create-name params)
+ (rsvp-create-email params)
+ (rsvp-create-attending params)
+ (rsvp-create-guests params)))
+ (values '((content-type . (application/json)))
+ (scm->json-string
+ `((receipt . ,receipt-code)))))))
@@ -158,28 +152,22 @@ It is a base64 string, encoding `%vanity-length' bytes of randomness."
(define (update-event-rsvp params)
"Handler for updating an RSVP to an event."
(let ((params (params->rsvp-update params)))
- (cond ((not params)
- (values (build-response #:code 400)
- (scm->json-string
- `((success . #f)
- (error . "Invalid form data")))))
- ((not (valid-receipt-code (rsvp-update-code params)))
- (values (build-response #:code 400)
- (scm->json-string
- `((success . #f)
- (error . "Invalid receipt code")))))
- (else
- (exec-query conn
- "UPDATE rsvps SET fullname = $2, email = $3, attending = $4, guests = $5 WHERE vanity = $1"
- (list
- (rsvp-update-code params)
- (rsvp-update-name params)
- (rsvp-update-email params)
- (rsvp-update-attending params)
- (rsvp-update-guests params)))
- (values '((content-type . (application/json)))
- (scm->json-string
- `((receipt . ,(rsvp-update-code params)))))))))
+ (unless params
+ (panic "invalid form data"))
+ (unless (valid-receipt-code (rsvp-update-code params))
+ (panic "invalid recepit code"))
+ (exec-query conn
+ "UPDATE rsvps SET fullname = $2, email = $3, attending = $4, guests = $5 WHERE vanity = $1"
+ (list
+ (rsvp-update-code params)
+ (rsvp-update-name params)
+ (rsvp-update-email params)
+ (rsvp-update-attending params)
+ (rsvp-update-guests params)))
+
+ (values '((content-type . (application/json)))
+ (scm->json-string
+ `((receipt . ,(rsvp-update-code params)))))))
@@ -188,10 +176,7 @@ It is a base64 string, encoding `%vanity-length' bytes of randomness."
(let* ((params (json-string->scm (utf8->string body))))
(cond ((assoc-ref params "id") (create-new-event-rsvp params))
((assoc-ref params "update") (update-event-rsvp params))
- (else (values (build-response #:code 400)
- (scm->json-string
- `((success . #f)
- (error . "Invalid invite/update code"))))))))
+ (else (panic "invalid invite/update code")))))
@@ -270,8 +255,4 @@ It is a base64 string, encoding `%vanity-length' bytes of randomness."
(get-event-receipt (car receipt-code)))
((and invitation-code (valid-invite-code (car invitation-code)))
(get-event-invitation (car invitation-code)))
- (else
- (values (build-response #:code 400)
- (scm->json-string
- `((success . #f)
- (error . "Invalid invitation or receipt code"))))))))
+ (else (panic "invalid invitation or receipt code")))))