use std::time::Duration;
use chrono::{DateTime, Utc};
use crate::model::ContentFormat;
pub const DEFAULT_USER_AGENT: &str = concat!(
"rss-cli/",
env!("CARGO_PKG_VERSION"),
" (+https://github.com/AnderEnder/rss-cli)"
);
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum CachePolicy {
#[default]
Revalidate,
MaxAge(Duration),
CacheFirst,
NoCache,
}
#[derive(Debug, Clone)]
pub struct FetchParams {
pub content_format: ContentFormat,
pub limit: Option<usize>,
pub max_content_chars: Option<usize>,
pub since: Option<DateTime<Utc>>,
pub concurrency: usize,
pub timeout: Duration,
pub user_agent: String,
pub cache_policy: CachePolicy,
}
impl Default for FetchParams {
fn default() -> Self {
Self {
content_format: ContentFormat::Markdown,
limit: None,
max_content_chars: None,
since: None,
concurrency: 8,
timeout: Duration::from_secs(30),
user_agent: DEFAULT_USER_AGENT.to_string(),
cache_policy: CachePolicy::Revalidate,
}
}
}