#whois #ip #lookup #async-api #github #json #server

whois-rust

This is a WHOIS client library for Rust, inspired by https://github.com/hjr265/node-whois

30 stable releases

1.6.0 Dec 18, 2023
1.5.2 Sep 11, 2023
1.5.1 Nov 4, 2022
1.5.0 Mar 18, 2022
1.1.4 Nov 14, 2018

#882 in Network programming

Download history 181/week @ 2024-11-17 260/week @ 2024-11-24 215/week @ 2024-12-01 399/week @ 2024-12-08 639/week @ 2024-12-15 270/week @ 2024-12-22 275/week @ 2024-12-29 3792/week @ 2025-01-05 27835/week @ 2025-01-12 3619/week @ 2025-01-19 2368/week @ 2025-01-26 3026/week @ 2025-02-02 2992/week @ 2025-02-09 2941/week @ 2025-02-16 4085/week @ 2025-02-23 5137/week @ 2025-03-02

15,468 downloads per month
Used in 3 crates

MIT license

29KB
579 lines

WHOIS Rust

CI

This is a WHOIS client library for Rust, inspired by https://github.com/hjr265/node-whois

Usage

You can make a servers.json file or copy one from https://github.com/hjr265/node-whois

This is a simple example of servers.json.

{
    "org": "whois.pir.org",
    "": "whois.ripe.net",
    "_": {
        "ip": {
            "host": "whois.arin.net",
            "query": "n + $addr\r\n"
        }
    }
}

Then, use the from_path (or from_string if your JSON data is in-memory) associated function to create a WhoIs instance.

use whois_rust::WhoIs;

let whois = WhoIs::from_path("/path/to/servers.json").unwrap();

Use the lookup method and input a WhoIsLookupOptions instance to lookup a domain or an IP.

use whois_rust::{WhoIs, WhoIsLookupOptions};

let whois = WhoIs::from_path("/path/to/servers.json").unwrap();

let result: String = whois.lookup(WhoIsLookupOptions::from_string("magiclen.org").unwrap()).unwrap();

Asynchronous APIs

You may want to use async APIs with your async runtime. This crate supports tokio, currently.

[dependencies.whois-rust]
version = "*"
features = ["tokio"]

After enabling the async feature, the from_path_async function and the lookup_async function are available.

Testing

# git clone --recurse-submodules git://github.com/magiclen/whois-rust.git

git clone git://github.com/magiclen/whois-rust.git

cd whois-rust

git submodule init
git submodule update --recursive

cargo test

Crates.io

https://crates.io/crates/whois-rust

Documentation

https://docs.rs/whois-rust

License

MIT

Dependencies

~12–23MB
~324K SLoC