#rdap #whois #client #parser #testing #async #rdap-client

test_friendly_rdap_client

A fork of the rdap_client crate, with some extra test plumbing

1 unstable release

0.1.0 Feb 14, 2023

#8 in #whois

BSD-2-Clause

80KB
2K SLoC

test_friendly_rdap_client

Async and fast RDAP client and parser for Rust.

Important Note

This is essentially a version of the original rdap_client with a few extra sprinkles to make it a bit easier for me to wire up rdap_client in integration tests.

I initially attempted to keep the code as close to upstream as possible but, unfortunately, crates.io either did not like the way the Cargo.toml was set up or (more likely) I was doing something stupid.

Usage

Add this to your Cargo.toml:

[dependencies]
test_friendly_rdap_client = "0.1"
tokio = "0.2"

and then you can use it like this:

use test_friendly_rdap_client::Client;

#[tokio::main]
async fn main() {
    let client = Client::new();
    let domain_to_check = "nic.cz";
    // Fetch boostrap from IANA.
    let bootstrap = client.fetch_bootstrap().await.unwrap();
    // Find what RDAP server to use for given domain.
    if let Some(servers) = bootstrap.dns.find(&domain_to_check) {
        let response = client.query_domain(&servers[0], domain_to_check).await.unwrap();
        println!("{}", response.handle);
    }
}

Supported standards

Supported extensions

Non standard responses

Not all RDAP servers follows RFC 7483 and then parser cannot parse that responses correctly. If that happend, feel free to open issue with URI that rdap_client could not parse.

Useful articles

Dependencies

~6–18MB
~251K SLoC