rdap 0.2.0

A modern RDAP (Registration Data Access Protocol) client
Documentation
//! Example: WHOIS-style plain text output
//!
//! Demonstrates using `format_whois()` to produce traditional WHOIS/RPSL-style
//! text output with no ANSI colors, suitable for piping to other programs:
//!
//!   cargo run --example whois_output | grep "mnt-by"
//!   cargo run --example whois_output | awk '/^admin-c:/ {print $2}'

use rdap::bootstrap::rir_to_rdap_url;
use rdap::whois::format_whois;
use rdap::{QueryType, RdapClient, RdapRequest};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = RdapClient::new()?;

    // --- ASN query with WHOIS output ---
    eprintln!("=== ASN Query (WHOIS format) ===\n");

    let request = RdapRequest::new(QueryType::Autnum, "AS213605");
    let result = client.query(&request).await?;
    let whois_text = format_whois(&result);
    print!("{}", whois_text);

    // --- Entity query via RIR shortcut ---
    eprintln!("\n=== Entity Query via RIR shortcut (WHOIS format) ===\n");

    let server = rir_to_rdap_url("ripe").expect("Unknown RIR");
    let request = RdapRequest::new(QueryType::Entity, "ORG-LA1994-RIPE").with_server(server);
    let result = client.query(&request).await?;
    let whois_text = format_whois(&result);
    print!("{}", whois_text);

    // --- Domain query ---
    eprintln!("\n=== Domain Query (WHOIS format) ===\n");

    let request = RdapRequest::new(QueryType::Domain, "example.com");
    let result = client.query(&request).await?;
    let whois_text = format_whois(&result);
    print!("{}", whois_text);

    Ok(())
}