aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMathieu Othacehe <othacehe@gnu.org>2020-08-03 15:27:00 +0200
committerMathieu Othacehe <othacehe@gnu.org>2020-08-03 15:27:00 +0200
commit2094d68053f606996b2f30a62a2ae4af06851ab6 (patch)
tree912e7eacde0d631028bbbbccd59e67470e2a9a4f /src
parent410d386ea8c0c29829e08a2dcf838de3202e7024 (diff)
downloadcuirass-2094d68053f606996b2f30a62a2ae4af06851ab6.tar
cuirass-2094d68053f606996b2f30a62a2ae4af06851ab6.tar.gz
http: Handle request parameters with no value.
Handle requests such as "/build/?nr" by ignoring parameters without any associated value. * src/cuirass/http.scm (request-parameters): Ignore silently parameters without an associated value. * tests/http.scm: Add a corresponding test case.
Diffstat (limited to 'src')
-rw-r--r--src/cuirass/http.scm17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/cuirass/http.scm b/src/cuirass/http.scm
index 39d8711..de27ea5 100644
--- a/src/cuirass/http.scm
+++ b/src/cuirass/http.scm
@@ -146,16 +146,19 @@ Hydra format."
(let* ((uri (request-uri request))
(query (uri-query uri)))
(if query
- (map (lambda (param)
+ (fold (lambda (param params)
(match (string-split param #\=)
((key param)
(let ((key-symbol (string->symbol key)))
- (cons key-symbol
- (match key-symbol
- ('id (string->number param))
- ('nr (string->number param))
- (_ param)))))))
- (string-split query #\&))
+ (cons (cons key-symbol
+ (match key-symbol
+ ('id (string->number param))
+ ('nr (string->number param))
+ (_ param)))
+ params)))
+ (_ #f)))
+ '()
+ (string-split query #\&))
'())))