Crate addr[][src]

Robust domain name parsing using the Public Suffix List

This library allows you to easily and accurately parse any given domain name.

Examples

extern crate addr;

use addr::{DomainName, DnsName, Email};

  // You can find out the root domain
  // or extension of any given domain name
  let domain: DomainName = "www.example.com".parse()?;
  assert_eq!(domain.root(), "example.com.");
  assert_eq!(domain.root().suffix(), "com.");

  let domain: DomainName = "www.食狮.中国".parse()?;
  assert_eq!(domain.root(), "食狮.中国.");
  assert_eq!(domain.root().suffix(), "中国.");

  let domain: DomainName = "www.xn--85x722f.xn--55qx5d.cn".parse()?;
  assert_eq!(domain.root(), "公司.cn.");
  assert_eq!(domain.root().suffix(), "cn.");

  let domain: DomainName = "a.b.example.uk.com".parse()?;
  assert_eq!(domain.root(), "example.uk.com.");
  assert_eq!(domain.root().suffix(), "uk.com.");

  let name: DnsName = "_tcp.example.com.".parse()?;
  assert_eq!(name.root(), "example.com.");
  assert_eq!(name.root().suffix(), "com.");

  let email: Email = "чебурашка@ящик-с-апельсинами.рф".parse()?;
  assert_eq!(email.user(), "чебурашка");
  assert_eq!(email.host(), "ящик-с-апельсинами.рф.");

  // In any case if the domain's suffix is in the list
  // then this is definately a registrable domain name
  assert!(domain.root().suffix().is_known());

Re-exports

pub use errors::Result;
pub use errors::Error;

Modules

errors

Errors returned by this library

Structs

DnsName

Holds information about a particular DNS name

DomainName
Email

Enums

Host

Holds information about a particular host