ip-api-client

Crates.ioip-api-client
lib.rsip-api-client
version0.5.1
sourcesrc
created_at2022-04-04 13:54:38.034886
updated_at2024-03-08 22:41:09.953738
descriptionThe client (based on ip-api.com api) allows you to get information about the IP address
homepagehttps://github.com/Mixerou/ip-api-client-rs
repositoryhttps://github.com/Mixerou/ip-api-client-rs
max_upload_size
id562012
size36,737
Ivan (Mixerou)

documentation

https://docs.rs/ip-api-client

README

IP API Client

The client (based on ip-api.com api) allows you to get information about the IP address

Usage

Add to project

[dependencies]
ip-api-client = "0.5.1"
tokio = { version = "1.36.0", features = ["macros", "rt-multi-thread"], default-features = false }

Write some Rust

use ip_api_client as Client;
use ip_api_client::{IpApiLanguage, IpData};

#[tokio::main]
async fn main() {
  // You can
  // `generate_empty_config` (to create your own config from scratch)
  // `generate_minimum_config` (that includes only important fields)
  // `generate_maximum_config` (that includes all fields)
  let ip_data: IpData = Client::generate_empty_config()
          // or `exclude_country` if this field is already included
          // in the generated config
          .include_country()
          // or `exclude_currency` if this field is already included in
          // the generated config
          .include_currency()
          // available languages: de/en (default)/es/fr/ja/pt-Br/ru/zh-CN
          .set_language(IpApiLanguage::De)
          // `make_request` takes
          // "ip"/"domain"/"empty string (if you want to request your ip)"
          .make_request("1.1.1.1")
          .await
          .unwrap();

  println!(
    "{}'s national currency is {}",
    ip_data.country.unwrap(),
    ip_data.currency.unwrap(),
  );

  // If you want to request more than one ip, you can use `make_batch_request`
  let ip_batch_data: Vec<IpData> = Client::generate_empty_config()
          .include_isp()
          // `make_batch_request` takes "IPv4"/"IPv6"
          .make_batch_request(vec!["1.1.1.1", "8.8.8.8"])
          .await
          .unwrap();

  println!(
    "1.1.1.1 belongs to `{}` and 8.8.8.8 belongs to `{}`",
    ip_batch_data.get(0).unwrap().isp.as_ref().unwrap(),
    ip_batch_data.get(1).unwrap().isp.as_ref().unwrap(),
  );
}

Peculiarities

Development Progress

  • Request IP address information with a configuration structure that allows you to customize the requested fields in the request to save traffic.
  • Get information about Ip in different languages
  • Query multiple IP addresses in one HTTP request.
  • Block all requests until the end of the limit if the last request was rate-limited.
  • Ability to cache all responses with automatic removal of old ip-data when the maximum cache size is reached.

License

This library (ip-api-client) is available under the MIT license. See the LICENSE file for more info.

Commit count: 19

cargo fmt