use super::algorithm::MurCompressionAlgorithm;
use super::level::MurCompressionLevel;

#[derive(Debug, Clone)]
pub struct MurCompressionConfig {
	pub algorithms: Vec<MurCompressionAlgorithm>,
	pub level: MurCompressionLevel,
	pub min_size: usize,
	pub content_types: Vec<String>,
	pub exclude_types: Vec<String>,
	pub compress_without_accept_encoding: bool,
}

impl Default for MurCompressionConfig {
	fn default() -> Self {
		Self {
			algorithms: vec![
				MurCompressionAlgorithm::Gzip,
				MurCompressionAlgorithm::Brotli,
			],
			level: MurCompressionLevel::Default,
			min_size: 860,
			content_types: Vec::new(),
			exclude_types: vec![
				"image/jpeg".to_string(),
				"image/png".to_string(),
				"image/gif".to_string(),
				"image/webp".to_string(),
				"video/".to_string(),
				"audio/".to_string(),
			],
			compress_without_accept_encoding: false,
		}
	}
}
