diff --git a/src/io/source_client.rs b/src/io/source_client.rs index 3dae0b2a..bfaa5080 100644 --- a/src/io/source_client.rs +++ b/src/io/source_client.rs @@ -30,7 +30,7 @@ impl HttpSourceClient { Self { #[cfg(not(target_arch = "wasm32"))] inner_client: crate::platform::http_client::ReqwestHttpClient::new(Some( - "/tmp/mapr-cache".to_string(), // TODO make path dynamic + "./mapr-cache".to_string(), // TODO make path dynamic )), #[cfg(target_arch = "wasm32")] inner_client: crate::platform::http_client::WHATWGFetchHttpClient::new(), diff --git a/src/platform/noweb/http_client.rs b/src/platform/noweb/http_client.rs index 46acbc25..7a00fc6e 100644 --- a/src/platform/noweb/http_client.rs +++ b/src/platform/noweb/http_client.rs @@ -38,10 +38,16 @@ impl ReqwestHttpClient { pub async fn fetch(&self, url: &str) -> Result, Error> { let response = self.client.get(url).send().await?; - if response.status() != StatusCode::OK { - return Err(Error::Network("response code not 200".to_string())); + match response.error_for_status() { + Ok(response) => { + if response.status() == StatusCode::NOT_MODIFIED { + log::info!("Using data from cache"); + } + + let body = response.bytes().await?; + Ok(Vec::from(body.as_ref())) + } + Err(e) => Err(Error::Network(e.to_string())), } - let body = response.bytes().await?; - Ok(Vec::from(body.as_ref())) } }