stac_io/realized_href.rs
1use std::path::PathBuf;
2use url::Url;
3
4/// An href that has been realized to a path or a url.
5#[derive(Debug)]
6pub enum RealizedHref {
7 /// A path buf
8 PathBuf(PathBuf),
9
10 /// A url
11 Url(Url),
12}
13
14impl From<&str> for RealizedHref {
15 fn from(s: &str) -> RealizedHref {
16 if let Ok(url) = Url::parse(s) {
17 if url.scheme() == "file" {
18 url.to_file_path()
19 .map(RealizedHref::PathBuf)
20 .unwrap_or_else(|_| RealizedHref::Url(url))
21 } else {
22 RealizedHref::Url(url)
23 }
24 } else {
25 RealizedHref::PathBuf(PathBuf::from(s))
26 }
27 }
28}