use std::path::Path;
use apimock_routing::util::json::JSON_COMPATIBLE_EXTENSIONS;
pub const ROOT_DIRECTORY_FILE_NAME: &str = "index";
pub fn resolve_with_json_compatible_extensions(unknown_path: &str) -> Option<String> {
let p = Path::new(unknown_path);
if p.is_file() {
return Some(unknown_path.to_owned());
}
for ext in JSON_COMPATIBLE_EXTENSIONS {
let with_ext = format!("{}.{}", unknown_path, ext);
if Path::new(&with_ext).is_file() {
return Some(with_ext);
}
}
for ext in JSON_COMPATIBLE_EXTENSIONS {
let p = Path::new(unknown_path).join(format!("{}.{}", ROOT_DIRECTORY_FILE_NAME, ext));
if p.is_file() {
return p
.canonicalize()
.ok()
.and_then(|c| c.to_str().map(|s| s.to_owned()));
}
}
let p = Path::new(unknown_path).join(format!("{}.html", ROOT_DIRECTORY_FILE_NAME));
if p.is_file() {
return p
.canonicalize()
.ok()
.and_then(|c| c.to_str().map(|s| s.to_owned()));
}
None
}