# pyrefly: ignore [missing-import]
import aiohttp
import logging
from config import UID_CHECKER_TOKEN, UID_CHECKER_SERVER

# Shared session with optimized connector
_session = None

async def get_session():
    global _session
    if _session is None or _session.closed:
        # Optimized connector with pooling and DNS caching
        connector = aiohttp.TCPConnector(limit=100, use_dns_cache=True, ttl_dns_cache=300)
        _session = aiohttp.ClientSession(connector=connector)
    return _session

async def get_uid_info(uid, server=None):
    """
    Fetches user info from the UID checker API using a shared session.
    """
    if not server:
        server = UID_CHECKER_SERVER
        
    url = f"http://139.99.96.201:8003/getinfo?uid={uid}&token={UID_CHECKER_TOKEN}&server={server}"
    
    try:
        session = await get_session()
        async with session.get(url, timeout=5) as response:
            text = await response.text()
            if response.status == 200:
                try:
                    data = await response.json()
                    name = data.get("name") or data.get("nickname") or data.get("username")
                    if name:
                        return {"status": "success", "name": name, "uid": uid, "server": server}
                except:
                    if text and len(text) < 50:
                        return {"status": "success", "name": text.strip(), "uid": uid, "server": server}
                
                return {"status": "error", "message": "Player name not found."}
            else:
                return {"status": "error", "message": f"API Error ({response.status})"}
    except Exception as e:
        return {"status": "error", "message": f"Timeout/Error: {type(e).__name__}"}
