Add #:required and #:multi-value support to parse-query-parameters
This commit is contained in:
parent
bec838caf9
commit
3d004f8597
1 changed files with 28 additions and 1 deletions
|
|
@ -59,7 +59,8 @@
|
||||||
accepted-query-parameters)
|
accepted-query-parameters)
|
||||||
(define request-query-parameters
|
(define request-query-parameters
|
||||||
(let ((query (uri-query (request-uri request))))
|
(let ((query (uri-query (request-uri request))))
|
||||||
(if query
|
(if (and query
|
||||||
|
(not (string-null? query)))
|
||||||
(map (match-lambda
|
(map (match-lambda
|
||||||
((name . value)
|
((name . value)
|
||||||
(cons (string->symbol name)
|
(cons (string->symbol name)
|
||||||
|
|
@ -75,6 +76,32 @@
|
||||||
((_ . "") #f)
|
((_ . "") #f)
|
||||||
((_ . value) (cons name
|
((_ . value) (cons name
|
||||||
(processor value)))))
|
(processor value)))))
|
||||||
|
|
||||||
|
((name processor #:required)
|
||||||
|
(match (assq name request-query-parameters)
|
||||||
|
(#f (cons name
|
||||||
|
(make-invalid-query-parameter
|
||||||
|
#f "this value is required.")))
|
||||||
|
((_ . "") (cons name
|
||||||
|
(make-invalid-query-parameter
|
||||||
|
#f "this value is required.")))
|
||||||
|
((_ . value) (cons name
|
||||||
|
(processor value)))))
|
||||||
|
|
||||||
|
((name processor #:multi-value)
|
||||||
|
(match (filter-map
|
||||||
|
(match-lambda
|
||||||
|
((k . value)
|
||||||
|
(and
|
||||||
|
(eq? k name)
|
||||||
|
(match value
|
||||||
|
(#f #f)
|
||||||
|
("" #f)
|
||||||
|
(value (processor value))))))
|
||||||
|
request-query-parameters)
|
||||||
|
(() #f)
|
||||||
|
(x (cons name x))))
|
||||||
|
|
||||||
((name processor #:default default)
|
((name processor #:default default)
|
||||||
(match (assq name request-query-parameters)
|
(match (assq name request-query-parameters)
|
||||||
(#f (cons name default))
|
(#f (cons name default))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue