1
Fork 0
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:
Andy Wingo 2010-11-08 16:06:50 +01:00
parent f25e1b6713
commit 4eb7c8f004

View file

@ -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