Crate icann_rdap_client
source ·Expand description
§ICANN RDAP Client Library
This is a client library for the Registration Data Access Protocol (RDAP) written and sponsored by the Internet Corporation for Assigned Names and Numbers (ICANN). RDAP is standard of the IETF, and extensions to RDAP are a current work activity of the IETF’s REGEXT working group. More information on ICANN’s role in RDAP can be found here. General information on RDAP can be found here.
§Installation
Add the library to your Cargo.toml: cargo add icann-rdap-client
Also, add the commons library: cargo add icann-rdap-common
.
Both icann-rdap-common and icann-rdap-client can be compiled for WASM targets.
§Usage
In RDAP, bootstrapping is the process of finding the authoritative RDAP server to query using the IANA RDAP bootstrap files. To make a query using bootstrapping:
use icann_rdap_client::*;
use std::str::FromStr;
use tokio::main;
#[tokio::main]
async fn main() -> Result<(), RdapClientError> {
// create a query
let query = QueryType::from_str("192.168.0.1")?;
// or
let query = QueryType::from_str("icann.org")?;
// create a client (from icann-rdap-common)
let config = ClientConfig::default();
let client = create_client(&config)?;
// ideally, keep store in same context as client
let store = MemoryBootstrapStore::new();
// issue the RDAP query
let response =
rdap_bootstrapped_request(
&query,
&client,
&store,
|reg| eprintln!("fetching {reg:?}")
).await?;
Ok(())
}
To specify a base URL:
use icann_rdap_client::*;
use std::str::FromStr;
use tokio::main;
#[tokio::main]
async fn main() -> Result<(), RdapClientError> {
// create a query
let query = QueryType::from_str("192.168.0.1")?;
// or
let query = QueryType::from_str("icann.org")?;
// create a client (from icann-rdap-common)
let config = ClientConfig::default();
let client = create_client(&config)?;
// issue the RDAP query
let base_url = "https://rdap-bootstrap.arin.net/bootstrap";
let response = rdap_request(base_url, &query, &client).await?;
Ok(())
}
§License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
§Contribution
Unless you explicitly state otherwise, any contribution, as defined in the Apache-2.0 license, intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed pursuant to the Apache License, Version 2.0 or the MIT License referenced as above, at ICANN’s option, without any additional terms or conditions.
Modules§
- Converts RDAP structures to gTLD Whois output.
- Converts RDAP to Markdown.
- Code for issuing RDAP queries.
- Structures that describe a request.
Structs§
- Configures the HTTP client.
- A bootstrap registry store backed by memory.
- Describes the error that occurs when parsing RDAP responses.
Enums§
- Defines the various types of RDAP lookups and searches.
- Error returned by RDAP client functions and methods.
Functions§
- Creates an HTTP client using Reqwest. The Reqwest client holds its own connection pools, so in many uses cases creating only one client per process is necessary.
- Makes an RDAP request using bootstrapping.
- Makes an RDAP request with a base URL.
- Makes an RDAP request with a full RDAP URL.