diff options
| author | Jakob L. Kreuze <zerodaysfordays@sdf.org> | 2022-04-12 20:26:36 -0400 |
|---|---|---|
| committer | Jakob L. Kreuze <zerodaysfordays@sdf.org> | 2022-05-08 19:10:19 -0400 |
| commit | 1d34616291ffac85596e56a4950ba29bb89c6a41 (patch) | |
| tree | 06c83decb5c7f03dcdb9ef5c3db0fe0582f7e2d8 /dynamic | |
| parent | c3ef51bc753f48607032e77d0b344453c7142141 (diff) | |
[scheme] Generate receipt code for RSVP submission
Diffstat (limited to 'dynamic')
| -rw-r--r-- | dynamic/api.scm | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/dynamic/api.scm b/dynamic/api.scm index 1bd3540..7ca3e36 100644 --- a/dynamic/api.scm +++ b/dynamic/api.scm @@ -1,7 +1,9 @@ (add-to-load-path (dirname (current-filename))) +;; (add-to-load-path "/home/jakob/Blog/dynamic") (use-modules (base64) (captcha) + (ice-9 binary-ports) (json) (srfi srfi-1) (srfi srfi-11) @@ -84,16 +86,22 @@ (x-captcha-id . ,uuid)) (base64-encode image)))) -(define (valid-invite-code invitation) - (and (= (string-length)))) +;; (define (valid-invite-code invitation) +;; (and (= (string-length)))) + +(define (generate-vanity-code) + (call-with-input-file "/dev/urandom" + (lambda (port) + (base64-encode (get-bytevector-n port 9))))) (define (post-event-rsvp request body) (let* ((params (json-string->scm (utf8->string body))) (invitation-code (assoc-ref params "id")) (name (assoc-ref params "name")) (email (assoc-ref params "email")) + (attending (assoc-ref params "rsvp")) (guests (assoc-ref params "guests"))) - (cond ((not (and invitation-code name email guests)) + (cond ((not (and invitation-code name email attending guests)) (values (build-response #:code 400 #:headers '((Access-Control-Allow-Origin . "*"))) (scm->json-string `((success . #f) @@ -104,12 +112,13 @@ `((success . #f) (error . "Invalid invitation code"))))) (else - (let* ((event-id (caar (exec-query conn "SELECT event_id FROM invitations WHERE vanity = $1" (list invitation-code))))) - (exec-query conn "INSERT INTO rsvps (event_id, fullname, email, guests) VALUES ($1, $2, $3, $4)" (list event-id name email guests)) + (let* ((receipt-code (generate-vanity-code)) + (event-id (caar (exec-query conn "SELECT event_id FROM invitations WHERE vanity = $1" (list invitation-code))))) + (exec-query conn "INSERT INTO rsvps (vanity, event_id, fullname, email, attending, guests) VALUES ($1, $2, $3, $4, $5, $6)" (list receipt-code event-id name email attending guests)) (values '((content-type . (application/json)) (Access-Control-Allow-Origin . "*")) (scm->json-string - `((success . #t))))))))) + `((receipt . ,receipt-code))))))))) (define (get-event-info request body) (define (format-rsvp rsvp) |