root/urlencoded-form.scm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(define-module (urlencoded-form)
  #:use-module (rnrs bytevectors)
  #:use-module (web uri)
  #:export (parse-urlencoded-form))

(define (parse-urlencoded-form body)
  (define str (utf8->string body))
  (define headers-raw (string-split str #\&))
  (define headers (map (lambda (str)
                         (define parts (string-split str #\=))
                         (if (> (length parts) 1)
                             (cons (list-ref parts 0)
                                   (uri-decode (list-ref parts 1)))
                             (cons (list-ref parts 0)
                                   #f)))
                       headers-raw))
  headers)