import type { Context } from "hono";

export interface UserAgentInfo {
    device_type: string;
    os: string;
    browser: string;
    ip_address: string;
}

export function parseUserAgent(ctx: Context): UserAgentInfo {
    const ua = ctx.req.header("User-Agent") || "unknown";
    const ip = ctx.req.header("x-forwarded-for") || ctx.req.header("x-real-ip") || "unknown";

    let device_type = "Desktop";
    if (/mobile/i.test(ua))
device_type = "Mobile";
    if (/tablet/i.test(ua))
device_type = "Tablet";

    let os = "Unknown OS";
    if (/windows/i.test(ua))
os = "Windows";
    else if (/mac os/i.test(ua))
os = "macOS";
    else if (/linux/i.test(ua))
os = "Linux";
    else if (/android/i.test(ua))
os = "Android";
    else if (/ios/i.test(ua) || /iphone/i.test(ua) || /ipad/i.test(ua))
os = "iOS";

    let browser = "Unknown Browser";
    if (/chrome/i.test(ua) && !/edge/i.test(ua))
browser = "Chrome";
    else if (/firefox/i.test(ua))
browser = "Firefox";
    else if (/safari/i.test(ua) && !/chrome/i.test(ua))
browser = "Safari";
    else if (/edge/i.test(ua))
browser = "Edge";

    const ipStr = Array.isArray(ip) ? ip[0] : ip;

    return {
        device_type,
        os,
        browser,
        ip_address: ipStr || "unknown",
    };
}
