#lang scheme (require net/url-structs) (define-struct dest (host port ssl?) #:transparent) (define (make host port [ssl? #f]) (make-dest host port ssl?)) (define host dest-host) (define port dest-port) (define ssl? dest-ssl?) (require net/url-structs) (define (parse-uri uri) (let ([ssl? (equal? (url-scheme uri) "https")]) (make-dest (url-host uri) (or (url-port uri) (if ssl? 443 80)) ssl?))) (provide/contract [make (->* (string? integer?) (boolean?) dest?)] [host (-> dest? string?)] [port (-> dest? integer?)] [ssl? (-> dest? boolean?)] [parse-uri (-> url? dest?)] [dest? (-> any/c boolean?)])