Crates.io | geoip |
lib.rs | geoip |
version | 0.0.14 |
source | src |
created_at | 2014-11-26 02:59:13.171539 |
updated_at | 2021-07-11 07:06:41.282306 |
description | Bindings for the GeoIP library |
homepage | https://github.com/jedisct1/rust-geoip |
repository | https://github.com/jedisct1/rust-geoip |
max_upload_size | |
id | 400 |
size | 21,382 |
GeoIP bindings for Rust.
Currently only supports:
Installation: use Cargo.
Tested with GeoIP v1.6.9.
City Database:
// Open by DBType
let geoip = GeoIp::open_type(DBType::CityEditionRev1, Options::MemoryCache).unwrap();
// Open by Path
let geoip = GeoIp::open(&Path::new("/opt/geoip/GeoLiteCity.dat"),
Options::MemoryCache)
.unwrap();
/*
GeoIp {
info: Ok(
"GEO-133 20160621 Build 1 Copyright (c) 2016 MaxMind Inc All Rights Re"
)
}
*/
// Query by IP
let ip = IpAddr::V4("8.8.8.8".parse().unwrap());
let res = geoip.city_info_by_ip(ip).unwrap();
/*
CityInfo {
country_code: Some(
"US"
),
country_code3: Some(
"USA"
),
country_name: Some(
"United States"
),
region: Some(
"CA"
),
city: Some(
"Mountain View"
),
postal_code: Some(
"94035"
),
latitude: 37.386,
longitude: -122.0838,
dma_code: Some(
807
),
area_code: Some(
650
),
continent_code: Some(
"NA"
),
netmask: 24
}
*/
// Get additional information (as compiled in the C library)
let region_name = GeoIp::region_name_by_code("US", "CA");
// Some("California")
// Get time zone inforamtion (as compiled in the C library)
let time_zone = GeoIp::time_zone_by_country_and_region("US", "CA");
// Some("America/Los_Angeles")
AS Database:
// Open by Path
let geoip = GeoIp::open(&Path::new("/opt/geoip/GeoIPASNum.dat"),
Options::MemoryCache)
.unwrap();
/*
GeoIp {
info: Ok(
"GEO-117 20160627 Build 1 Copyright (c) 2016 MaxMind Inc All Rights Re"
)
}
*/
// Query by IP
let ip = IpAddr::V4("8.8.8.8".parse().unwrap());
let res = geoip.as_info_by_ip(ip).unwrap();
/*
ASInfo {
asn: 15169,
name: "Google Inc.",
netmask: 24
}
*/