mirror of https://codeberg.org/cage/tinmop/
- [gemini] allow percent encoding of query, path and fragment only if not already encoded.
This commit is contained in:
parent
6c590dbf1a
commit
5151fbe4a2
|
@ -287,19 +287,15 @@
|
|||
(defun percent-encode-path (path)
|
||||
(let ((splitted (split "/" path)))
|
||||
(if splitted
|
||||
(reduce (lambda (a b) (strcat a "/" (percent-encode b)))
|
||||
(reduce (lambda (a b) (strcat a "/" (maybe-percent-encode b)))
|
||||
splitted)
|
||||
path)))
|
||||
|
||||
(defun percent-encode-allow-null (data)
|
||||
(when data
|
||||
(percent-encode data)))
|
||||
|
||||
(defun percent-encode-query (query)
|
||||
(percent-encode-allow-null query))
|
||||
(maybe-percent-encode query))
|
||||
|
||||
(defun percent-encode-fragment (fragment)
|
||||
(percent-encode-allow-null fragment))
|
||||
(maybe-percent-encode fragment))
|
||||
|
||||
(defun request (host path &key
|
||||
(query nil)
|
||||
|
|
|
@ -371,7 +371,10 @@
|
|||
:annotated-text-value
|
||||
:box-fit-multiple-column-annotated
|
||||
:collect-links
|
||||
:percent-encode))
|
||||
:percent-encode
|
||||
:percent-decode
|
||||
:percent-encoded-p
|
||||
:maybe-percent-encode))
|
||||
|
||||
(defpackage :html-utils
|
||||
(:use
|
||||
|
|
|
@ -673,3 +673,21 @@ printed in the box column by column; in the example above the results are:
|
|||
|
||||
(defun percent-encode (string)
|
||||
(percent-encoding:encode string :encoding :utf-8))
|
||||
|
||||
(defun percent-decode (string)
|
||||
(percent-encoding:decode string :encoding :utf-8))
|
||||
|
||||
(defun percent-encoded-p (string)
|
||||
(conditions:with-default-on-error (t)
|
||||
(string/= string
|
||||
(percent-decode string))))
|
||||
|
||||
(defun percent-encode-allow-null (data)
|
||||
(when data
|
||||
(percent-encode data)))
|
||||
|
||||
(defun maybe-percent-encode (data)
|
||||
"Note that when data is null this function returns nil"
|
||||
(if (percent-encoded-p data)
|
||||
data
|
||||
(percent-encode-allow-null data)))
|
||||
|
|
Loading…
Reference in New Issue