✨ Clean url with suffix
				
					
				
			This commit is contained in:
		| @@ -6,4 +6,4 @@ hosts = ["localhost"] | ||||
| paths = ["/"] | ||||
| [[locations.destinations]] | ||||
| id = "static" | ||||
| uri = "files://regions/index.html" | ||||
| uri = "files://regions?index=index.html" | ||||
|   | ||||
							
								
								
									
										15
									
								
								regions/subfolder/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								regions/subfolder/index.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| <!doctype html> | ||||
| <html> | ||||
|   <head> | ||||
|     <meta charset="utf-8" /> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1" /> | ||||
|     <title>Hello, World!</title> | ||||
|   </head> | ||||
|   <body> | ||||
|     <p>Hello, there!</p> | ||||
|     <p> | ||||
|       Here's the roadsign benchmarking test data! And you are in the subfolder | ||||
|       now! | ||||
|     </p> | ||||
|   </body> | ||||
| </html> | ||||
| @@ -98,20 +98,23 @@ impl Destination { | ||||
|                         .get("utf8") | ||||
|                         .and_then(|val| val.as_bool()) | ||||
|                         .unwrap_or(false), | ||||
|                     with_slash: queries | ||||
|                         .get("slash") | ||||
|                         .and_then(|val| val.as_bool()) | ||||
|                         .unwrap_or(false), | ||||
|                     browse: queries | ||||
|                         .get("browse") | ||||
|                         .and_then(|val| val.as_bool()) | ||||
|                         .unwrap_or(false), | ||||
|                     with_slash: queries | ||||
|                         .get("slash") | ||||
|                         .and_then(|val| val.as_bool()) | ||||
|                         .unwrap_or(false), | ||||
|                     index: queries | ||||
|                         .get("index") | ||||
|                         .and_then(|val| val.as_str().map(str::to_string)), | ||||
|                     fallback: queries | ||||
|                         .get("fallback") | ||||
|                         .and_then(|val| val.as_str().map(str::to_string)), | ||||
|                     suffix: queries | ||||
|                         .get("suffix") | ||||
|                         .and_then(|val| val.as_str().map(str::to_string)), | ||||
|                 }) | ||||
|             } | ||||
|             _ => Err(()), | ||||
|   | ||||
| @@ -20,7 +20,9 @@ pub fn scan_regions(basepath: String) -> io::Result<(Vec<config::Region>, u32)> | ||||
| } | ||||
|  | ||||
| pub fn load_region(file: DirEntry) -> Result<config::Region, String> { | ||||
|     if file.path().extension().and_then(OsStr::to_str).unwrap() != "toml" { | ||||
|     if file.metadata().map(|val| val.is_dir()).unwrap() | ||||
|         || file.path().extension().and_then(OsStr::to_str).unwrap() != "toml" | ||||
|     { | ||||
|         return Err("File entry wasn't toml file".to_string()); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -97,10 +97,11 @@ pub async fn respond_hypertext( | ||||
| pub struct StaticResponderConfig { | ||||
|     pub uri: String, | ||||
|     pub utf8: bool, | ||||
|     pub with_slash: bool, | ||||
|     pub browse: bool, | ||||
|     pub with_slash: bool, | ||||
|     pub index: Option<String>, | ||||
|     pub fallback: Option<String>, | ||||
|     pub suffix: Option<String>, | ||||
| } | ||||
|  | ||||
| pub async fn respond_static( | ||||
| @@ -142,6 +143,22 @@ pub async fn respond_static( | ||||
|     } | ||||
|  | ||||
|     if !file_path.exists() { | ||||
|         if let Some(suffix) = cfg.suffix { | ||||
|             let file_name = file_path | ||||
|                 .file_name() | ||||
|                 .and_then(OsStr::to_str) | ||||
|                 .unwrap() | ||||
|                 .to_string(); | ||||
|             file_path.pop(); | ||||
|             file_path.push((file_name + &suffix).as_str()); | ||||
|             if file_path.is_file() { | ||||
|                 return Ok(StaticFileRequest::from_request_without_body(req) | ||||
|                     .await? | ||||
|                     .create_response(&file_path, cfg.utf8)? | ||||
|                     .into_response()); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if let Some(file) = cfg.fallback { | ||||
|             let fallback_path = base_path.join(file); | ||||
|             if fallback_path.is_file() { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user