#!/usr/bin/env racket #lang racket (require srfi/98) (require net/uri-codec) (require net/smtp) (define ERROR-HEADER "Location: register-fail\n\n") (define SUCCESS-HEADER "Location: register-success\n\n") (define FRIENDLY-MESSAGE #<alist (port->string))) (required-extract (map (lambda(x) (let ((e (assoc (car x) post-data))) (cond [(false? e) #f] [((cdr x) (cdr e)) e] [else #f]))) required-fields)) (check-extract (filter identity (map ((curryr assoc) post-data) check-fields))) (filled-out? (andmap identity required-extract))) (when (not filled-out?) (printf ERROR-HEADER) (exit 0)) (smtp-send-message "caffeine.csclub.uwaterloo.ca" "opencl-contest-registration@csclub" (list "init512@gmail.com") "Subject: Contestant registered!\n\n" (list (with-output-to-string (lambda() (write (append required-extract check-extract)))))) (smtp-send-message "caffeine.csclub.uwaterloo.ca" "exec@csclub.uwaterloo.ca" (list (cdr (assoc 'email required-extract))) "Subject: OpenCL Registration Received\n\n" (list FRIENDLY-MESSAGE)) (printf SUCCESS-HEADER) (exit 0))