@@ -69,7 +69,11 @@ pub async fn serve(
6969 ) ;
7070
7171 if serve_flags. open_site {
72- let url = resolve_serve_url ( serve_flags. host , serve_flags. port ) ;
72+ let url = resolve_serve_url (
73+ serve_flags. host ,
74+ serve_flags. port ,
75+ serve_flags. tls_cert_and_key . is_some ( ) ,
76+ ) ;
7377 let _ = open:: that_detached ( url) ;
7478 }
7579
@@ -232,18 +236,20 @@ async fn serve_with_watch(
232236 Ok ( 0 )
233237}
234238
235- fn resolve_serve_url ( host : String , port : u16 ) -> String {
239+ fn resolve_serve_url ( host : String , port : u16 , https : bool ) -> String {
236240 let host = if matches ! ( host. as_str( ) , "0.0.0.0" | "::" ) {
237241 "127.0.0.1" . to_string ( )
238242 } else if std:: net:: Ipv6Addr :: from_str ( & host) . is_ok ( ) {
239243 format ! ( "[{}]" , host)
240244 } else {
241245 host
242246 } ;
243- if port == 80 {
244- format ! ( "http://{host}/" )
247+ let ( scheme, default_port) =
248+ if https { ( "https" , 443 ) } else { ( "http" , 80 ) } ;
249+ if port == default_port {
250+ format ! ( "{scheme}://{host}/" )
245251 } else {
246- format ! ( "http ://{host}:{port}/" )
252+ format ! ( "{scheme} ://{host}:{port}/" )
247253 }
248254}
249255
@@ -254,17 +260,36 @@ mod test {
254260 #[ test]
255261 fn test_resolve_serve_url ( ) {
256262 assert_eq ! (
257- resolve_serve_url( "localhost" . to_string( ) , 80 ) ,
263+ resolve_serve_url( "localhost" . to_string( ) , 80 , false ) ,
258264 "http://localhost/"
259265 ) ;
260266 assert_eq ! (
261- resolve_serve_url( "0.0.0.0" . to_string( ) , 80 ) ,
267+ resolve_serve_url( "0.0.0.0" . to_string( ) , 80 , false ) ,
268+ "http://127.0.0.1/"
269+ ) ;
270+ assert_eq ! (
271+ resolve_serve_url( "::" . to_string( ) , 80 , false ) ,
262272 "http://127.0.0.1/"
263273 ) ;
264- assert_eq ! ( resolve_serve_url( "::" . to_string( ) , 80 ) , "http://127.0.0.1/" ) ;
265274 assert_eq ! (
266- resolve_serve_url( "::" . to_string( ) , 90 ) ,
275+ resolve_serve_url( "::" . to_string( ) , 90 , false ) ,
267276 "http://127.0.0.1:90/"
268277 ) ;
278+ assert_eq ! (
279+ resolve_serve_url( "localhost" . to_string( ) , 443 , true ) ,
280+ "https://localhost/"
281+ ) ;
282+ assert_eq ! (
283+ resolve_serve_url( "0.0.0.0" . to_string( ) , 443 , true ) ,
284+ "https://127.0.0.1/"
285+ ) ;
286+ assert_eq ! (
287+ resolve_serve_url( "::" . to_string( ) , 443 , true ) ,
288+ "https://127.0.0.1/"
289+ ) ;
290+ assert_eq ! (
291+ resolve_serve_url( "::" . to_string( ) , 90 , true ) ,
292+ "https://127.0.0.1:90/"
293+ ) ;
269294 }
270295}
0 commit comments