From ec2d143ffd4bc1f81f1cd2caa06cffb3e52105a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Tue, 24 Oct 2023 18:53:11 +0200 Subject: Merge (web uri-query) into (web query). --- doc/ref/web.texi | 1 - doc/ref/web/query.texi | 5 +++++ doc/ref/web/uri-query.texi | 7 ------- module/calp/html/vcomponent.scm | 2 +- module/calp/html/view/search.scm | 2 +- module/calp/server/routes.scm | 2 +- module/web/query.scm | 15 ++++++++++++++- module/web/uri-query.scm | 19 ------------------- 8 files changed, 22 insertions(+), 31 deletions(-) delete mode 100644 doc/ref/web/uri-query.texi delete mode 100644 module/web/uri-query.scm diff --git a/doc/ref/web.texi b/doc/ref/web.texi index 8574e166..cf80e26e 100644 --- a/doc/ref/web.texi +++ b/doc/ref/web.texi @@ -2,5 +2,4 @@ @chapter Webservers and -Clients @include web/query.texi -@include web/uri-query.texi @include web/routes.texi diff --git a/doc/ref/web/query.texi b/doc/ref/web/query.texi index df3ba953..6458db5a 100644 --- a/doc/ref/web/query.texi +++ b/doc/ref/web/query.texi @@ -7,3 +7,8 @@ Given a string like ``?key=value&other=something'', returns both key and value. A key without a value decodes to that key, with itself as its value @end defun + +@defun encode-query-parameters parameters +Given the association list @var{parameter}, encode it into a query +string on the form ``key=value&...''. +@end defun diff --git a/doc/ref/web/uri-query.texi b/doc/ref/web/uri-query.texi deleted file mode 100644 index d3df3a70..00000000 --- a/doc/ref/web/uri-query.texi +++ /dev/null @@ -1,7 +0,0 @@ -@node URI Query -@section (web uri-query) - -@defun encode-query-parameters parameters -Given the association list @var{parameter}, encode it into a query -string on the form ``key=value&...''. -@end defun diff --git a/module/calp/html/vcomponent.scm b/module/calp/html/vcomponent.scm index 0516b9d4..f99e91ad 100644 --- a/module/calp/html/vcomponent.scm +++ b/module/calp/html/vcomponent.scm @@ -10,7 +10,7 @@ :use-module (vcomponent) :use-module (datetime) :use-module ((text util) :select (add-enumeration-punctuation)) - :use-module ((web uri-query) :select (encode-query-parameters)) + :use-module ((web query) :select (encode-query-parameters)) :use-module ((calp html util) :select (html-id calculate-fg-color)) :use-module ((calp html config) :select (edit-mode debug)) :use-module ((crypto) :select (sha256 checksum->string)) diff --git a/module/calp/html/view/search.scm b/module/calp/html/view/search.scm index e400c1ba..3eb34e2b 100644 --- a/module/calp/html/view/search.scm +++ b/module/calp/html/view/search.scm @@ -3,7 +3,7 @@ :use-module (vcomponent) :use-module (vcomponent util search) :use-module ((ice-9 pretty-print) :select (pretty-print)) - :use-module ((web uri-query) :select (encode-query-parameters)) + :use-module ((web query) :select (encode-query-parameters)) :use-module ((calp html components) :select (xhtml-doc include-css)) :use-module ((calp html vcomponent) diff --git a/module/calp/server/routes.scm b/module/calp/server/routes.scm index fac061e8..1d7a7dfb 100644 --- a/module/calp/server/routes.scm +++ b/module/calp/server/routes.scm @@ -11,7 +11,7 @@ :use-module ((web response) :select (build-response)) :use-module ((web uri) :select (build-relative-ref)) - :use-module ((web uri-query) :select (encode-query-parameters)) + :use-module ((web query) :select (encode-query-parameters)) :use-module ((sxml simple) :select (sxml->xml xml->sxml)) :use-module ((sxml html) :select (sxml->html)) 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) + "&")) diff --git a/module/web/uri-query.scm b/module/web/uri-query.scm deleted file mode 100644 index e7cc627c..00000000 --- a/module/web/uri-query.scm +++ /dev/null @@ -1,19 +0,0 @@ -(define-module (web uri-query) - :use-module ((web uri) :select (uri-encode)) - :export (encode-query-parameters) - ) - -;; TODO why this format for values? -;; TODO why aren't we encoding the keys? -;; TODO why isn't this in the same module as `parse-query'? -;; TODO why isn't this on the same format as `parse-query'? - -(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) - "&")) - -- cgit v1.2.3