import http.server
import socketserver
from datetime import datetime
import locale

# 1. Configurar la localización a español para abreviaturas correctas
#    Esto es crucial para que salgan 'Nov', 'Jue', etc., en español.
try:
    locale.setlocale(locale.LC_TIME, 'es_ES.UTF-8')
except locale.Error:
    # Si 'es_ES.UTF-8' falla, prueba otras configuraciones comunes para español
    try:
        locale.setlocale(locale.LC_TIME, 'es_ES')
    except locale.Error:
        print("Advertencia: No se pudo configurar la localización en español. Las abreviaturas de día/mes podrían salir en inglés.")

# 2. Definir el puerto y el manejador de peticiones
PORT = 8000
HOST = "127.0.0.1" # El servidor local

class DateHandler(http.server.SimpleHTTPRequestHandler):
    """Manejador personalizado para devolver la fecha formateada."""

    def do_GET(self):
        """Maneja las peticiones GET (las que hará Unreal Engine)."""
        
        # Patrón de formato deseado: "ma. 13 fefb. 2024"
        #
        # Códigos de formato en Python:
        # %a : Nombre abreviado del día de la semana (e.g., 'Jue')
        # %d : Día del mes (con cero inicial si es necesario)
        # %b : Nombre abreviado del mes (e.g., 'Nov')
        # %Y : Año con siglo
        
        # Usamos .lower() para asegurar las minúsculas, y luego ajustamos los puntos
        # La salida hoy sería: "jue. 06 nov. 2025" (la ajustamos un poco)
        
        now = datetime.now()
        
        # Formato base (ej: "Jue 06 Nov 2025")
        formatted_date_str = now.strftime("%a. %d %b. %Y")
        
        # Convertir a minúsculas para emular "ma." y limpiar/ajustar puntos
        formatted_date_str = formatted_date_str.lower().replace('.', '').replace(' ', ' ')
        
        # Ejemplo para hoy: "jue. 06 nov. 2025"
        final_response = f"{now.strftime('%a').lower().replace('.', '')}. {now.strftime('%d').replace('0', '')} {now.strftime('%b').lower().replace('.', '')}. {now.strftime('%Y')}"

        # 3. Preparar la respuesta HTTP
        self.send_response(200)
        self.send_header("Content-type", "text/plain; charset=utf-8")
        self.end_headers()
        
        # 4. Enviar la fecha formateada como respuesta
        self.wfile.write(final_response.encode('utf-8'))


# 5. Levantar el servidor
try:
    with socketserver.TCPServer((HOST, PORT), DateHandler) as httpd:
        print(f"✅ Servidor local Python levantado en http://{HOST}:{PORT}")
        print(f"URL de prueba para Unreal Engine: http://{HOST}:{PORT}/")
        print("Presiona Ctrl+C para detener el servidor.")
        httpd.serve_forever()
except KeyboardInterrupt:
    print("\nServidor detenido por el usuario.")
except Exception as e:
    print(f"Error al levantar el servidor: {e}")