14 releases

0.0.14 Jul 11, 2021
0.0.13 Feb 18, 2019
0.0.12 Jan 24, 2017
0.0.11 Jan 22, 2016
0.0.2 Nov 26, 2014

#16 in #legacy

ISC license

24KB
568 lines

rust-geoip

GeoIP bindings for Rust.

Currently only supports:

Installation: use Cargo.

Tested with GeoIP v1.6.9.

Usage:

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
}
*/

Dependencies

~280KB