aboutsummaryrefslogtreecommitdiff
path: root/module/web/query.scm
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2023-10-24 18:53:11 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2023-10-24 18:53:11 +0200
commitec2d143ffd4bc1f81f1cd2caa06cffb3e52105a9 (patch)
tree47b3144c970a638b024b22a3ef7d8b0bb3be93f9 /module/web/query.scm
parentSplit webdav documentation into multiple files. (diff)
downloadcalp-ec2d143ffd4bc1f81f1cd2caa06cffb3e52105a9.tar.gz
calp-ec2d143ffd4bc1f81f1cd2caa06cffb3e52105a9.tar.xz
Merge (web uri-query) into (web query).
Diffstat (limited to 'module/web/query.scm')
-rw-r--r--module/web/query.scm15
1 files changed, 14 insertions, 1 deletions
diff --git a/module/web/query.scm b/module/web/query.scm
index 4a1abf66..3645797f 100644
--- a/module/web/query.scm
+++ b/module/web/query.scm
@@ -3,7 +3,8 @@
:use-module (srfi srfi-1)
:use-module (srfi srfi-71)
:use-module (web uri)
- :export (parse-query))
+ :export (parse-query
+ encode-query-parameters))
(define* (parse-query query-string optional: (encoding "UTF-8"))
(unless (or (not query-string) (string-null? query-string))
@@ -19,3 +20,15 @@
(values v v))))))
(cons* (-> key string->symbol symbol->keyword) val list)))
'() (string-split query-string #\&))))
+
+
+;; TODO why this format for values?
+;; TODO why aren't we encoding the keys?
+(define (encode-query-parameters parameters)
+ (string-join
+ (map (lambda (p)
+ (format #f "~a=~a"
+ (car p)
+ (uri-encode (with-output-to-string (lambda () (write (cdr p)))))))
+ parameters)
+ "&"))