Fix MaxMind (#4590)

This commit is contained in:
aecsocket
2025-10-20 08:58:31 -07:00
committed by GitHub
parent 63d8f70e20
commit 24bec6baba
7 changed files with 26 additions and 33 deletions

View File

@@ -2,6 +2,7 @@
use std::{
io::{Cursor, Read},
net::IpAddr,
path::Path,
sync::Arc,
};
@@ -49,6 +50,19 @@ impl MaxMind {
.ok(),
}
}
/// Queries the MaxMind database for the ISO country code of an IP address.
///
/// If MaxMind is not configured or the database could not be read, returns
/// [`None`].
pub async fn query_country(&self, ip: impl Into<IpAddr>) -> Option<String> {
let reader = self.reader.as_ref()?;
reader
.lookup::<geoip2::Country>(ip.into())
.ok()?
.and_then(|c| c.country)
.and_then(|c| c.iso_code.map(|s| s.to_string()))
}
}
/// Creates a [`maxminddb::Reader`] for use in [`MaxMind::reader`].