summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Devos <maximedevos@telenet.be>2021-10-07 11:06:36 +0200
committerMaxime Devos <maximedevos@telenet.be>2021-10-07 11:06:36 +0200
commit89e65eb3f6ba1af5b9026c26ac1679a04ca15f59 (patch)
tree91d1f00749b0e2fbea08332a5a21bc40afa5e1df
parente6d9e0a8e8546a82d599696991a9837bbaa61cfe (diff)
examples/web: Display UTF-8 keys and data as text.dht
* examples/web.scm (try-utf8->string,data->string): New procedures (process-search-dht): Use data->string for 'key' and 'data'.
-rw-r--r--examples/web.scm15
1 files changed, 13 insertions, 2 deletions
diff --git a/examples/web.scm b/examples/web.scm
index f3fdc60..7311376 100644
--- a/examples/web.scm
+++ b/examples/web.scm
@@ -126,6 +126,17 @@
(decode/data (assoc-ref parameters "data-encoding")
(assoc-ref parameters "data"))))
+(define (try-utf8->string bv) ; TODO: less duplication
+ (catch 'decoding-error
+ (lambda () (utf8->string bv))
+ (lambda _ #false)))
+
+(define (data->string slice)
+ (define bv (make-bytevector (slice-length slice)))
+ (slice-copy! slice (bv-slice/read-write bv))
+ (define as-string (try-utf8->string bv))
+ (or as-string (object->string bv)))
+
(define (process-search-dht dht-server parameters)
(define what)
(define found? (make-condition))
@@ -154,9 +165,9 @@
`((dt "Type: ")
(dd ,type)
(dt "Key: ")
- (dd ,key)
+ (dd ,(data->string key))
(dt "Data: ")
- (dd ,(object->string data))
+ (dd ,(data->string data))
(dt "Expiration: ")
(dd ,(object->string expiration))
(dt "Get path: ") ; TODO as list