my-security-package1
Version:
A security package providing various utilities for IP detection, device fingerprinting, bot detection, cookie duplication checking, country verification, and VPN detection.
60 lines (55 loc) • 2.89 kB
JavaScript
const axios = require('axios');
const GEO_API_URL = `https://echoip.miratsapiservices.com/ip-data`;
async function getGeoData() {
try {
const response = await axios.get(GEO_API_URL);
const data = response.data; // Axios already parses JSON, no need for response.json()
return {
geo_data: {
ip: data.ipv4 || data.ip, // Use `ipv4` if available, fallback to `ip`
continent_code: "", // Not provided in API response
continent_name: "", // Not provided in API response
country_code2: data.country_code2,
country_code3: data.country_code3,
country_name: data.country_name, // API returns short country name
country_name_official: "", // Not available in API response
country_capital: "", // Not available in API response
state_prov: "", // Not available in API response
state_code: "", // Not available in API response
district: "", // Not available in API response
city: "", // Not available in API response
zipcode: "", // Not available in API response
latitude: "", // Not available in API response
longitude: "", // Not available in API response
is_eu: "", // Not available in API response
calling_code: "", // Not available in API response
country_tld: "", // Not available in API response
languages: "", // Not available in API response
country_flag: "", // Not available in API response
geoname_id: "", // Not available in API response
isp: "", // Not available in API response
connection_type: "", // Not available in API response
organization: "", // Not available in API response
country_emoji: "", // Not available in API response
asn: "", // Not available in API response
currency: {
code: "", // Not available in API response
name: "",
symbol: "",
},
time_zone: {
name: data.time_zone?.name || "",
offset: "", // Not available in API response
offset_with_dst: "", // Not available in API response
current_time: "", // Not available in API response
current_time_unix: Math.floor(new Date().getTime() / 1000),
is_dst: "", // Not available in API response
dst_savings: "", // Not available in API response
},
}
};
} catch (error) {
throw new Error('Error fetching geo data: ' + error.message);
}
}
module.exports = getGeoData;