#gis #ip #ip-address

seeip

Rust Wrapper for the IP Info https://seeip.org/ API

4 stable releases

3.0.1 Aug 5, 2024
3.0.0 Apr 5, 2022
2.0.0 Apr 4, 2022
1.0.0 Apr 4, 2022

#93 in Geospatial


Used in ipfetch

Custom license

16KB
244 lines

seeip

Rust Wrapper for the IP Info https://seeip.org/ API
See example project using this seeip library: https://github.com/mark-ruddy/ipfetch

Examples

All of the below examples support both IPv4 and IPv6 addresses.
To specifically use either IPv4 or IPv6 use their _v4() and _v6() equivalents.

Get the caller's IP address

let my_ip = seeip::get_ip().unwrap();
println!("My IP: {}", my_ip);

Get the caller's geographical information

let my_geo_info = seeip::get_caller_geo().unwrap();
// Fields in GeoInfo can default out to empty values if not available from the API
println!("Country my IP matches: {}", my_geo_info.country);

Get geographical information for an IP address

let geo_info = seeip::get_geo("208.67.222.222").unwrap();
println!("Country matching this IP: {}", geo_info.country);

Testing

The tests involve making actual API calls. This means that they can fail if you make an IPv6-only call when your host does not support IPv6:

If you are on a host supporting both IPv4 and IPv6: cargo test --verbose
For a host that only supports IPv4: cargo test --verbose -- --skip v6
For a host that only supports IPv6: cargo test --verbose -- --skip v4

Dependencies

~4–15MB
~216K SLoC