diff --git a/src/feed_utils.rs b/src/feed_utils.rs index 1230f3f..00d3b12 100644 --- a/src/feed_utils.rs +++ b/src/feed_utils.rs @@ -1,4 +1,5 @@ use feed_rs; +use std::time::Duration; use tracing::{error, info}; use url::Url; @@ -8,9 +9,22 @@ pub struct FeedError; pub async fn fetch_feed(url: &Url) -> Result { info!("Making a request to fetch feed `{url}`"); + // Create a client with a 10 second timeout + let client = reqwest::Client::builder() + .timeout(Duration::from_secs(10)) + .build() + .map_err(|e| { + error!("Failed to create HTTP client: {}", e); + FeedError + })?; + // Fetch the feed content - let response = reqwest::get(url.as_ref()).await.map_err(|e| { - error!("Failed to fetch feed: {}", e); + let response = client.get(url.as_ref()).send().await.map_err(|e| { + if e.is_timeout() { + error!("Request timed out after 10 seconds: {}", e); + } else { + error!("Failed to fetch feed: {}", e); + } FeedError })?;