import psutil
import time
import requests

class SystemStats:
    @staticmethod
    def get_memory_usage():
        """Obtiene el porcentaje de uso de memoria."""
        return psutil.virtual_memory().percent

    @staticmethod
    def get_cpu_usage():
        """Obtiene el porcentaje de uso de CPU."""
        return psutil.cpu_percent(interval=0)

    @staticmethod
    def get_network_usage():
        """Calcula la velocidad de subida y bajada de la red."""
        net_io_start = psutil.net_io_counters()
        time.sleep(1)  # Esperar 1 segundo para medir el uso
        net_io_end = psutil.net_io_counters()

        # Calcular velocidades
        bytes_sent_per_sec = net_io_end.bytes_sent - net_io_start.bytes_sent
        bytes_recv_per_sec = net_io_end.bytes_recv - net_io_start.bytes_recv

        return bytes_sent_per_sec, bytes_recv_per_sec
    
    @staticmethod
    def track_ip(ip):
        """Obtiene información de una IP mediante la API ipwho.is."""
        try:
            response = requests.get(f"http://ipwho.is/{ip}")
            data = response.json()
            if not data.get("success", False):
                return {"error": data.get("message", "No se encontró información.")}
            return data
        except requests.exceptions.RequestException as e:
            return {"error": str(e)}
