pub mod output_formats {
pub const TEXT: &str = "text";
pub const JSON: &str = "json";
pub const MINIMAL: &str = "minimal";
pub const DEFAULT: &str = TEXT;
pub const ALL: [&str; 3] = [TEXT, JSON, MINIMAL];
}
pub mod http_status {
pub const OK: u16 = 200;
pub const NOT_FOUND: u16 = 404;
pub const INTERNAL_SERVER_ERROR: u16 = 500;
pub const FORBIDDEN: u16 = 403;
pub const MOVED_PERMANENTLY: u16 = 301;
pub const FOUND: u16 = 302;
pub const BAD_GATEWAY: u16 = 502;
}
pub mod timeouts {
pub const DEFAULT_TIMEOUT_SECONDS: u64 = 5;
pub const MAX_TIMEOUT_SECONDS: u64 = 3600;
pub const MIN_TIMEOUT_SECONDS: u64 = 1;
pub const DEFAULT_RETRY_DELAY_MS: u64 = 1000;
pub const DEFAULT_RATE_LIMIT_MS: u64 = 0;
}
pub mod defaults {
pub const RETRY_ATTEMPTS: u32 = 0;
pub const CONCURRENCY_AUTO: u32 = 0;
pub const NO_FAILURE_THRESHOLD: Option<f64> = None;
}
pub mod validation {
pub const MIN_LINE_NUMBER: u64 = 1;
pub const MAX_PERCENTAGE: f64 = 100.0;
pub const MIN_PERCENTAGE: f64 = 0.0;
}
pub mod error_messages {
pub const OPERATION_TIMED_OUT: &str = "operation timed out";
pub const CONNECTION_TIMEOUT: &str = "Connection timeout";
pub const UNKNOWN_ERROR: &str = "Unknown error";
}
pub mod files {
pub const DEFAULT_URL_CAPACITY_PER_FILE: usize = 20;
pub const ESTIMATED_URLS_PER_MATCH: usize = 2;
pub const MAX_FILES_TO_DISPLAY: usize = 10;
}
pub mod display {
pub const SUCCESS_EMOJI: &str = "✅";
pub const WARNING_EMOJI: &str = "⚠️";
pub const ERROR_EMOJI: &str = "❌";
pub const NETWORK_ERROR_EMOJI: &str = "🔌";
pub const SERVER_ERROR_EMOJI: &str = "💥";
pub const CLIENT_ERROR_EMOJI: &str = "🚫";
pub const REDIRECT_EMOJI: &str = "🔄";
pub const OTHER_EMOJI: &str = "❓";
pub const FILE_EMOJI: &str = "📁";
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_output_formats_constants() {
assert_eq!(output_formats::TEXT, "text");
assert_eq!(output_formats::JSON, "json");
assert_eq!(output_formats::MINIMAL, "minimal");
assert_eq!(output_formats::DEFAULT, "text");
assert_eq!(output_formats::ALL.len(), 3);
}
#[test]
fn test_http_status_constants() {
assert_eq!(http_status::OK, 200);
assert_eq!(http_status::NOT_FOUND, 404);
assert_eq!(http_status::INTERNAL_SERVER_ERROR, 500);
}
#[test]
fn test_timeout_constants() {
assert_eq!(timeouts::DEFAULT_TIMEOUT_SECONDS, 5);
assert_eq!(timeouts::MAX_TIMEOUT_SECONDS, 3600);
assert_eq!(timeouts::MIN_TIMEOUT_SECONDS, 1);
}
#[test]
fn test_validation_constants() {
assert_eq!(validation::MIN_LINE_NUMBER, 1);
assert_eq!(validation::MAX_PERCENTAGE, 100.0);
assert_eq!(validation::MIN_PERCENTAGE, 0.0);
}
#[test]
fn test_error_message_constants() {
assert_eq!(error_messages::OPERATION_TIMED_OUT, "operation timed out");
assert_eq!(error_messages::CONNECTION_TIMEOUT, "Connection timeout");
assert_eq!(error_messages::UNKNOWN_ERROR, "Unknown error");
}
}