use super::{
super::{context::*, url::*},
file_url::*,
};
use std::path::*;
impl UrlContext {
pub fn file_url(
self: &UrlContextRef,
path: PathBuf,
host: Option<String>,
query: Option<UrlQuery>,
fragment: Option<String>,
) -> UrlRef {
FileUrl::new(self, path, host, query, fragment).into()
}
#[cfg(feature = "blocking")]
pub fn working_dir_url(self: &UrlContextRef) -> Result<UrlRef, super::super::UrlError> {
use std::env::*;
let mut url = self.file_url(current_dir()?, None, None, None);
url.conform()?;
Ok(url.into())
}
#[cfg(feature = "async")]
pub async fn working_dir_url_async(self: &UrlContextRef) -> Result<UrlRef, super::super::UrlError> {
use std::env::*;
let url = self.file_url(current_dir()?, None, None, None);
let url = url.conform_async()?.await?;
Ok(url)
}
#[cfg(feature = "blocking")]
pub fn working_dir_url_vec(self: &UrlContextRef) -> Result<Vec<UrlRef>, super::super::UrlError> {
Ok(vec![self.working_dir_url()?])
}
#[cfg(feature = "async")]
pub async fn working_dir_url_vec_async(self: &UrlContextRef) -> Result<Vec<UrlRef>, super::super::UrlError> {
Ok(vec![self.working_dir_url_async().await?])
}
}