ipwhois_rs

Crates.ioipwhois_rs
lib.rsipwhois_rs
version0.1.0
created_at2025-07-24 07:01:36.287058+00
updated_at2025-07-24 07:01:36.287058+00
descriptionRust wrapper for the ipwhois.io geolocation API
homepagehttps://github.com/Junaid433/ipwhois_rs
repositoryhttps://github.com/Junaid433/ipwhois_rs
max_upload_size
id1765642
size56,480
Junaid Rahman (Junaid433)

documentation

https://docs.rs/ipwhois_rs

README

ipwhois_rs

License Crates.io Build

A Rust wrapper library for IP whois and geolocation lookup using ipwhois.io API.


Features

  • Lookup IP address information including location, ISP, timezone, and flags.
  • Async API using Tokio runtime.
  • Detailed response struct with nested data.

Example Usage

use ipwhois_rs::IpWhoIs;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut client = IpWhoIs::new();
    let info = client.lookup("8.8.4.4").await?;

    println!("IP: {}", info.ip);
    println!("Country: {} ({})", info.country, info.country_code);
    println!("City: {}", info.city);
    println!("Latitude: {}", info.latitude);
    println!("Longitude: {}", info.longitude);
    println!("Flag Emoji: {}", info.flag.emoji);
    println!("ISP: {}", info.connection.isp);
    println!("Timezone: {}", info.timezone.id);

    Ok(())
}


Response Data Structure

The IpWhoIsResponse struct contains detailed information returned by the API.

IpWhoIsResponse Fields

  • ip (String): Queried IP address.
  • success (bool): Whether the lookup was successful.
  • ip_type (String): IP type, e.g., "IPv4" or "IPv6".
  • continent (String): Continent name (e.g., "North America").
  • continent_code (String): Continent code (e.g., "NA").
  • country (String): Country name (e.g., "United States").
  • country_code (String): Country code (e.g., "US").
  • region (String): Region or state name (e.g., "California").
  • region_code (String): Region code (e.g., "CA").
  • city (String): City name (e.g., "Mountain View").
  • latitude (f64): Latitude coordinate.
  • longitude (f64): Longitude coordinate.
  • is_eu (bool): Whether the IP belongs to the European Union.
  • postal (String): Postal or ZIP code.
  • calling_code (String): International telephone calling code.
  • capital (String): Capital city of the country.
  • borders (String): Bordering countries or regions.
  • flag (Flag): Country flag information.
  • connection (Connection): ISP and ASN info.
  • timezone (TimeZone): Timezone info.

Nested Structs

Flag

  • img (String): URL to the country flag image.
  • emoji (String): Country flag emoji.
  • emoji_unicode (String): Unicode points for the emoji flag.

Connection

  • asn (i32): Autonomous System Number.
  • org (String): Organization (ISP or company).
  • isp (String): Internet Service Provider name.
  • domain (String): Domain associated with the connection.

TimeZone

  • id (String): Timezone identifier (e.g., "America/Los_Angeles").
  • abbr (String): Timezone abbreviation (e.g., "PDT").
  • is_dst (bool): Whether daylight saving time is active.
  • offset (i32): Offset in seconds from UTC (e.g., -25200).
  • utc (String): UTC offset as a string (e.g., "-07:00").
  • current_time (String): Current local time in the timezone.

License

MIT © 2025 Junaid Rahman(https://github.com/junaid433)

Commit count: 0

cargo fmt