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}