use crate::fetch::FetchMode;
use std::time::Duration;
#[derive(Debug, Clone)]
pub struct Web2llmConfig {
pub user_agent: String,
pub timeout: Duration,
pub block_private_hosts: bool,
pub sensitivity: f32,
pub max_tokens: usize,
pub robots_check: bool,
pub rate_limit: u32,
pub max_concurrency: usize,
pub fetch_mode: FetchMode,
pub ordered: bool,
}
impl Default for Web2llmConfig {
fn default() -> Self {
Self {
user_agent: format!("web2llm/{}", env!("CARGO_PKG_VERSION")),
timeout: Duration::from_secs(30),
block_private_hosts: true,
sensitivity: 0.1,
max_tokens: 1000,
robots_check: true,
rate_limit: 5,
max_concurrency: 10,
fetch_mode: FetchMode::Auto,
ordered: false,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_config_defaults() {
let config = Web2llmConfig::default();
assert!(config.user_agent.contains(env!("CARGO_PKG_VERSION")));
assert_eq!(config.timeout, Duration::from_secs(30));
assert!(config.block_private_hosts);
assert_eq!(config.sensitivity, 0.1);
assert!(config.robots_check);
}
}