root/render/captcha-example.scm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
(define-module (render captcha-example)
  #:use-module (srfi srfi-19) ;; date
  #:use-module (web server)
  #:use-module (web request)
  #:use-module (web response)
  #:use-module (web uri)
  #:use-module (webserver-utils)
  #:use-module (sxml simple)
  #:use-module (utils)
  #:use-module (plugin captcha-interface)
  #:use-module (render captcha)
  #:export (make-captcha-page))


(define (make-captcha-page captcha request body)
  (define captcha-result (make-captcha captcha 'post request body))
  (cond
   ((eq? (request-method request) 'GET)
    `((message . #f)
      (columns . ,(make-columns (captcha-sxml captcha-result)))))
   ((captcha-did-solve-correct captcha-result)
    `((message . (success "correct!"))
      (columns . ,(make-columns (captcha-sxml captcha-result)))))
   (#t
    `((message . (error ,(captcha-failure captcha-result)))
      (columns . ,(make-columns (captcha-sxml captcha-result)))))))

(define (make-columns captcha-sxml)
  `(((a (@ (href "/")) "back")
     (hr)
     (form (@ (class "register-form")
              (method "POST")
              (action ""))
           ,captcha-sxml))))