#geo-ip #maxmind #client #rest-client #api-client #geo-ip2 #geoip2

maxmind_geo_ip2

MaxMind GeoIP2 API的REST API客户端

9个版本

0.2.5 2022年5月2日
0.2.4 2022年5月2日
0.2.3 2021年4月23日
0.1.9 2021年4月18日

HTTP客户端中排名第261

Download history 67/week @ 2024-07-23

每月下载量67

MIT许可证

18KB
371

maxmind_geo_ip2 API客户端

完整文档请见此处:https://docs.rs/maxmind_geo_ip2/

Crates.io页面请见此处:https://crates.io/crates/maxmind_geo_ip2

警告:这仍然是一个非常正在进行中的项目 - 可能/肯定不应该在生产中使用。

这是我第一个Rust crate,所以任何关于改进等的建议都非常欢迎。

待办事项

  • 错误处理
  • 响应状态检查

依赖项

reqwest = { version = "0.11.3", features = ["rustls", "json"] }
serde = { version = "1.0.125", features = ["derive"] }

使用方法

从crate中导入api客户端

use maxmind_geo_ip2::ApiClient;

使用Maxmind API凭据初始化客户端

let maxmind_client = ApiClient::new_client(String::from("user_id_here"), String::from("license_key_here"));

方法

获取国家

API端点

https://geoip.maxmind.com/geoip/v2.1/country/{ip_address}

方法签名

get_country(ip_address: &str) -> Result<CountryResponse, Box<dyn std::error::Error>>

响应

pub struct CountryResponse {
    pub continent: Continent,
    pub maxmind: MaxMind,
    pub traits: Traits,
    pub represented_country: Option<RepresentedCountry>,
    pub registered_country: RegisteredCountry,
    pub country: Country,
}

获取城市

API端点

https://geoip.maxmind.com/geoip/v2.1/city/{ip_address}

方法签名

get_city(ip_address: &str) -> Result<CityResponse, Box<dyn std::error::Error>>

响应

pub struct CityResponse {
    pub city: City,
    pub continent: Continent,
    pub country: Country,
    pub location: Location,
    pub postal: Postal,
    pub represented_country: Option<RepresentedCountry>,
    pub registered_country: RegisteredCountry,
    pub subdivisions: Vec<Subdivision>,
    pub traits: Traits,
    pub maxmind: MaxMind,
}

获取洞察

API端点

https://geoip.maxmind.com/geoip/v2.1/insights/{ip_address}

方法签名

get_insights(ip_address: &str) -> Result<InsightsResponse, Box<dyn std::error::Error>>

响应

pub struct InsightsResponse {
    pub city: City,
    pub continent: Continent,
    pub country: Country,
    pub location: Location,
    pub postal: Postal,
    pub represented_country: Option<RepresentedCountry>,
    pub registered_country: RegisteredCountry,
    pub subdivisions: Vec<Subdivision>,
    pub traits: Traits,
    pub maxmind: MaxMind,
}

依赖项

~4–16MB
~254K SLoC