Fix URL-encoding issue with port-numbers
:80 and :443 would be redundantly added to HTTP and HTTPS URLs, respectively.
This commit is contained in:
parent
36c8b2a87b
commit
0a26e42b6f
|
@ -151,10 +151,10 @@ already set)."
|
||||||
“https://invalid.tld/dad alive.jpg” → “https://invalid.tld/dad%20alive.jpg”"
|
“https://invalid.tld/dad alive.jpg” → “https://invalid.tld/dad%20alive.jpg”"
|
||||||
(let ((uri (quri:uri uri)))
|
(let ((uri (quri:uri uri)))
|
||||||
(format nil "~@[~A://~]~A~@[:~A~]~A"
|
(format nil "~@[~A://~]~A~@[:~A~]~A"
|
||||||
(quri:uri-scheme uri)
|
(quri:uri-scheme uri)
|
||||||
(quri:uri-host uri)
|
(quri:uri-host uri)
|
||||||
(quri:uri-port uri)
|
(uri-explicit-port uri)
|
||||||
(url-encode-path (quri:uri-path uri)))))
|
(url-encode-path (quri:uri-path uri)))))
|
||||||
|
|
||||||
;; string → string
|
;; string → string
|
||||||
(defun url-encode-path (path)
|
(defun url-encode-path (path)
|
||||||
|
@ -166,3 +166,15 @@ already set)."
|
||||||
(lambda (a b)
|
(lambda (a b)
|
||||||
(format nil "~A/~A" a b))
|
(format nil "~A/~A" a b))
|
||||||
(mapcar #'quri:url-encode path-parts))))
|
(mapcar #'quri:url-encode path-parts))))
|
||||||
|
|
||||||
|
;; quri-uri → number
|
||||||
|
(defun uri-explicit-port (uri)
|
||||||
|
"Given a HTTP/HTTPS URI, return a port-number if it isn’t implied by the protocol.
|
||||||
|
That is, 443 is implied by HTTPS, so nil is returned; but 998 wouldn’t be implied."
|
||||||
|
(let ((scheme (quri:uri-scheme uri))
|
||||||
|
(port (quri:uri-port uri)))
|
||||||
|
(unless (or (and (equal scheme "https")
|
||||||
|
(eq port 443))
|
||||||
|
(and (equal scheme "http")
|
||||||
|
(eq port 80)))
|
||||||
|
port)))
|
||||||
|
|
Ŝarĝante…
Reference in New Issue