@@ -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
@@ -229,18 +233,20 @@ async fn serve_with_watch(
229233 Ok ( 0 )
230234}
231235
232- fn resolve_serve_url ( host : String , port : u16 ) -> String {
236+ fn resolve_serve_url ( host : String , port : u16 , https : bool ) -> String {
233237 let host = if matches ! ( host. as_str( ) , "0.0.0.0" | "::" ) {
234238 "127.0.0.1" . to_string ( )
235239 } else if std:: net:: Ipv6Addr :: from_str ( & host) . is_ok ( ) {
236240 format ! ( "[{}]" , host)
237241 } else {
238242 host
239243 } ;
240- if port == 80 {
241- format ! ( "http://{host}/" )
244+ let ( scheme, default_port) =
245+ if https { ( "https" , 443 ) } else { ( "http" , 80 ) } ;
246+ if port == default_port {
247+ format ! ( "{scheme}://{host}/" )
242248 } else {
243- format ! ( "http ://{host}:{port}/" )
249+ format ! ( "{scheme} ://{host}:{port}/" )
244250 }
245251}
246252
@@ -251,17 +257,36 @@ mod test {
251257 #[ test]
252258 fn test_resolve_serve_url ( ) {
253259 assert_eq ! (
254- resolve_serve_url( "localhost" . to_string( ) , 80 ) ,
260+ resolve_serve_url( "localhost" . to_string( ) , 80 , false ) ,
255261 "http://localhost/"
256262 ) ;
257263 assert_eq ! (
258- resolve_serve_url( "0.0.0.0" . to_string( ) , 80 ) ,
264+ resolve_serve_url( "0.0.0.0" . to_string( ) , 80 , false ) ,
265+ "http://127.0.0.1/"
266+ ) ;
267+ assert_eq ! (
268+ resolve_serve_url( "::" . to_string( ) , 80 , false ) ,
259269 "http://127.0.0.1/"
260270 ) ;
261- assert_eq ! ( resolve_serve_url( "::" . to_string( ) , 80 ) , "http://127.0.0.1/" ) ;
262271 assert_eq ! (
263- resolve_serve_url( "::" . to_string( ) , 90 ) ,
272+ resolve_serve_url( "::" . to_string( ) , 90 , false ) ,
264273 "http://127.0.0.1:90/"
265274 ) ;
275+ assert_eq ! (
276+ resolve_serve_url( "localhost" . to_string( ) , 443 , true ) ,
277+ "https://localhost/"
278+ ) ;
279+ assert_eq ! (
280+ resolve_serve_url( "0.0.0.0" . to_string( ) , 443 , true ) ,
281+ "https://127.0.0.1/"
282+ ) ;
283+ assert_eq ! (
284+ resolve_serve_url( "::" . to_string( ) , 443 , true ) ,
285+ "https://127.0.0.1/"
286+ ) ;
287+ assert_eq ! (
288+ resolve_serve_url( "::" . to_string( ) , 90 , true ) ,
289+ "https://127.0.0.1:90/"
290+ ) ;
266291 }
267292}
0 commit comments