1 unstable release
0.1.0 | Feb 14, 2023 |
---|
#8 in #whois
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
- RFC 7480: HTTP Usage in the Registration Data Access Protocol (RDAP)
- RFC 7482: Registration Data Access Protocol (RDAP) Query Format
- RFC 7483: JSON Responses for the Registration Data Access Protocol (RDAP)
- RFC 8056: Extensible Provisioning Protocol (EPP) and Registration Data Access Protocol (RDAP) Status Mapping
- RFC 8521: Registration Data Access Protocol (RDAP) Object Tagging
- RDAP JSON Values
Supported extensions
fred
cidr0
arin_originas0
rdap_objectTag
(RFC 8521)
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