geoIpLookup function
Implementation
Future<Map<String, dynamic>?> geoIpLookup(
String ip, {
Duration timeout = const Duration(seconds: 5),
}) async {
try {
final uri = Uri.parse(
'http://ip-api.com/json/$ip?fields=status,country,regionName,city,isp,org,as,query',
);
final client = HttpClient();
client.connectionTimeout = timeout;
final req = await client.getUrl(uri).timeout(timeout);
final resp = await req.close().timeout(timeout);
final body = await resp.transform(utf8.decoder).join();
client.close();
final map = jsonDecode(body) as Map<String, dynamic>;
if (map['status'] == 'success') {
return map;
}
return null;
} catch (_) {
return null;
}
}