diff --git a/packages/cargo/jns42-generator/src/utils/read_url.rs b/packages/cargo/jns42-generator/src/utils/read_url.rs index 1e6a4180..8a8caff5 100644 --- a/packages/cargo/jns42-generator/src/utils/read_url.rs +++ b/packages/cargo/jns42-generator/src/utils/read_url.rs @@ -6,17 +6,19 @@ use url::Url; pub type ReadUrlItem = Result, Box>; -pub async fn read_url(url: &Url) -> Result>, Box> { +pub async fn read_url( + url: &Url, +) -> Result + Unpin>, Box> { let scheme = url.scheme(); match scheme { - "file:" => { + "file" => { let file = File::open(url.to_file_path().unwrap()).await?; let stream = ReadStream::new(file); let stream = stream.map(|item| item.map_err(|error| Box::new(error) as Box)); Ok(Box::new(stream)) } - "http:" | "https:" => { + "http" | "https" => { let response = reqwest::get(url.as_str()).await?.error_for_status()?; let stream = response.bytes_stream(); let stream = stream.map(|item| { diff --git a/packages/cargo/jns42-generator/src/utils/yaml.rs b/packages/cargo/jns42-generator/src/utils/yaml.rs index 1b006004..57da646e 100644 --- a/packages/cargo/jns42-generator/src/utils/yaml.rs +++ b/packages/cargo/jns42-generator/src/utils/yaml.rs @@ -1,16 +1,13 @@ use crate::utils::yaml_deserializer::YamlDeserializer; use futures_util::StreamExt; -use futures_util::TryStreamExt; -use std::error::Error; use url::Url; +use super::read_url::read_url; + pub async fn load_yaml(url: &Url) -> Result, Box> { - let response = reqwest::get(url.as_str()).await?.error_for_status()?; - let body = response - .bytes_stream() - .map_err(|error| Box::new(error) as Box); + let stream = read_url(url).await?; - let mut deserializer = YamlDeserializer::new(body); + let mut deserializer = YamlDeserializer::new(stream); if let Some(item) = deserializer.next().await { let item = item?;