37 lines
1.6 KiB
Racket
37 lines
1.6 KiB
Racket
#lang racket/base
|
|
(require racket/match net/url)
|
|
(define (debug-url-string U)
|
|
(match-define (url s u h p pa? (list (path/param pas prms) ...) q f) (string->url U))
|
|
(printf "URL: ~s~%" U)
|
|
(printf "-----~a~%" (make-string (string-length (format "~s" U)) #\-))
|
|
(when #t (printf "scheme: ~s~%" s))
|
|
(when u (printf "user: ~s~%" u))
|
|
(when h (printf "host: ~s~%" h))
|
|
(when p (printf "port: ~s~%" p))
|
|
;; From documentation link in text:
|
|
;; > For Unix paths, the root directory is not included in `path';
|
|
;; > its presence or absence is implicit in the path-absolute? flag.
|
|
(printf "path-absolute?: ~s~%" pa?)
|
|
(printf "path bits: ~s~%" pas)
|
|
;; prms will often be a list of lists. this will print iff
|
|
;; one of the inner lists is not null
|
|
(when (memf pair? prms)
|
|
(printf "param bits: ~s [interleaved with path bits]~%" prms))
|
|
(unless (null? q) (printf "query: ~s~%" q))
|
|
(when f (printf "fragment: ~s~%" f))
|
|
(newline))
|
|
|
|
(for-each
|
|
debug-url-string
|
|
'("foo://example.com:8042/over/there?name=ferret#nose"
|
|
"urn:example:animal:ferret:nose"
|
|
"jdbc:mysql://test_user:ouupppssss@localhost:3306/sakila?profileSQL=true"
|
|
"ftp://ftp.is.co.za/rfc/rfc1808.txt"
|
|
"http://www.ietf.org/rfc/rfc2396.txt#header1"
|
|
"ldap://[2001:db8::7]/c=GB?objectClass=one&objectClass=two"
|
|
"mailto:John.Doe@example.com"
|
|
"news:comp.infosystems.www.servers.unix"
|
|
"tel:+1-816-555-1212"
|
|
"telnet://192.0.2.16:80/"
|
|
"urn:oasis:names:specification:docbook:dtd:xml:4.1.2"))
|