mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 11:40:18 +02:00
unparse-uri avoids serializing e.g. :80 in http:// uris
* module/web/uri.scm (declare-default-port!): New function, declares a default port for a scheme. Predeclare default ports for http and https. (unparse-uri): If the port is the default port for the given scheme, don't serialize the port part of the URI.
This commit is contained in:
parent
f25e1b6713
commit
4eb7c8f004
1 changed files with 16 additions and 3 deletions
|
@ -29,6 +29,7 @@
|
|||
uri-path uri-query uri-fragment
|
||||
|
||||
build-uri
|
||||
declare-default-port!
|
||||
parse-uri unparse-uri
|
||||
uri-decode uri-encode
|
||||
split-and-decode-uri-path
|
||||
|
@ -174,6 +175,18 @@
|
|||
(lambda (k)
|
||||
#f)))
|
||||
|
||||
(define *default-ports* (make-hash-table))
|
||||
|
||||
(define (declare-default-port! scheme port)
|
||||
(hashq-set! *default-ports* scheme port))
|
||||
|
||||
(define (default-port? scheme port)
|
||||
(or (not port)
|
||||
(eqv? port (hashq-ref *default-ports* scheme))))
|
||||
|
||||
(declare-default-port! 'http 80)
|
||||
(declare-default-port! 'https 443)
|
||||
|
||||
(define (unparse-uri uri)
|
||||
(let* ((scheme-str (string-append
|
||||
(symbol->string (uri-scheme uri)) ":"))
|
||||
|
@ -190,9 +203,9 @@
|
|||
(if userinfo (string-append userinfo "@")
|
||||
"")
|
||||
host
|
||||
(if port
|
||||
(string-append ":" (number->string port))
|
||||
""))
|
||||
(if (default-port? (uri-scheme uri) port)
|
||||
""
|
||||
(string-append ":" (number->string port))))
|
||||
"")
|
||||
path
|
||||
(if query
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue