use super::RegistryParser;
use crate::whois::parser::WhoisResponse;
#[derive(Debug, Clone, Default)]
pub struct GenericParser;
impl GenericParser {
pub fn new() -> Self {
Self
}
}
impl RegistryParser for GenericParser {
fn supported_tlds(&self) -> &[&str] {
&[]
}
fn parse(&self, domain: &str, server: &str, raw: &str) -> WhoisResponse {
WhoisResponse::parse_internal(domain, server, raw)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_generic_parser_basic() {
let parser = GenericParser::new();
let raw = r#"
Domain Name: example.com
Registrar: Example Registrar, Inc.
Creation Date: 2020-01-15T00:00:00Z
Expiration Date: 2025-01-15T00:00:00Z
Name Server: ns1.example.com
Name Server: ns2.example.com
"#;
let result = parser.parse("example.com", "whois.example.com", raw);
assert_eq!(result.domain, "example.com");
assert_eq!(
result.registrar,
Some("Example Registrar, Inc.".to_string())
);
assert_eq!(result.nameservers.len(), 2);
}
}