Expand description
Robust domain name parsing using the Public Suffix List
This library allows you to easily and accurately parse any given domain name.
Examples
use addr::{parse_domain_name, parse_dns_name};
// You can find out the root domain
// or extension of any given domain name
let domain = parse_domain_name("www.example.com")?;
assert_eq!(domain.root(), Some("example.com"));
assert_eq!(domain.suffix(), "com");
let domain = parse_domain_name("www.食狮.中国")?;
assert_eq!(domain.root(), Some("食狮.中国"));
assert_eq!(domain.suffix(), "中国");
let domain = parse_domain_name("www.xn--85x722f.xn--55qx5d.cn")?;
assert_eq!(domain.root(), Some("xn--85x722f.xn--55qx5d.cn"));
assert_eq!(domain.suffix(), "xn--55qx5d.cn");
let domain = parse_domain_name("a.b.example.uk.com")?;
assert_eq!(domain.root(), Some("example.uk.com"));
assert_eq!(domain.suffix(), "uk.com");
let name = parse_dns_name("_tcp.example.com.")?;
assert_eq!(name.suffix(), Some("com."));
// In any case if the domain's suffix is in the list
// then this is definately a registrable domain name
assert!(domain.has_known_suffix());
!
Re-exports
pub use crate::psl::parse_dns_name;
pub use crate::psl::parse_domain_name;
pub use crate::psl::parse_email_address;
Modules
DNS types
Domain name types
Email address types
The errors returned by this crate
Parser traits
The static implementation of the public suffix list
Type Definitions
Custom result type