add city, subdivision1, subdivison2

This commit is contained in:
Francis Cao 2023-02-16 18:55:51 -08:00
parent 074fa2c5fc
commit 6bacfa5892

View File

@ -27,7 +27,7 @@ export function getIpAddress(req) {
return requestIp.getClientIp(req);
}
export function getDevice(screen, browser, os) {
export function getDevice(screen, os) {
if (!screen) return;
const [width] = screen.split('x');
@ -55,12 +55,7 @@ export function getDevice(screen, browser, os) {
}
}
export async function getCountry(req, ip) {
// Cloudflare
if (req.headers['cf-ipcountry']) {
return req.headers['cf-ipcountry'];
}
export async function getLocation(ip) {
// Ignore local ips
if (await isLocalhost(ip)) {
return;
@ -72,19 +67,27 @@ export async function getCountry(req, ip) {
}
const result = lookup.get(ip);
const country = result?.country?.iso_code ?? result?.registered_country?.iso_code;
const subdivision1 = result?.subdivisions[0].iso_code;
const subdivision2 = result?.subdivisions[1].iso_code;
const city = result?.city?.names?.en;
return result?.country?.iso_code;
return { country, subdivision1, subdivision2, city };
}
export async function getClientInfo(req, { screen }) {
const location = await getLocation(ip);
const userAgent = req.headers['user-agent'];
const ip = getIpAddress(req);
const country = await getCountry(req, ip);
const country = location.country;
const subdivision1 = location.subdivision1;
const subdivision2 = location.subdivision2;
const city = location.city;
const browser = browserName(userAgent);
const os = detectOS(userAgent);
const device = getDevice(screen, browser, os);
return { userAgent, browser, os, ip, country, device };
return { userAgent, browser, os, ip, country, subdivision1, subdivision2, city, device };
}
export function getJsonBody(req) {