Crate addr

Source
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
DNS types
domain
Domain name types
email
Email address types
error
The errors returned by this crate
parser
Parser traits
psl
The static implementation of the public suffix list

Type Aliases§

Result
Custom result type