DEMO

from fastapi import FastAPI, HTTPException from pydantic import BaseModel from datetime import datetime, timedelta from typing import Dict app = FastAPI() # Simulando base de datos en memoria clientes_db: Dict[str, Dict] = {} # Modelo de entrada para registro y activación class ClienteInput(BaseModel): email: str @app.post("/registrar-descarga") def registrar_descarga(data: ClienteInput): email = data.email.lower() if email in clientes_db: raise HTTPException(status_code=400, detail="Cliente ya registrado") clientes_db[email] = { "fecha_descarga": datetime.now(), "licencia_activada": False } return {"mensaje": "Descarga registrada. Licencia demo activa por 30 días."} @app.post("/activar-licencia") def activar_licencia(data: ClienteInput): email = data.email.lower() if email not in clientes_db: raise HTTPException(status_code=404, detail="Cliente no encontrado") clientes_db[email]["licencia_activada"] = True return {"mensaje": "Licencia activada. Acceso permanente habilitado."} @app.get("/verificar-licencia") def verificar_licencia(email: str): email = email.lower() cliente = clientes_db.get(email) if not cliente: raise HTTPException(status_code=404, detail="Cliente no registrado") if cliente["licencia_activada"]: return {"acceso": True, "mensaje": "Licencia activada. Acceso habilitado."} dias_transcurridos = (datetime.now() - cliente["fecha_descarga"]).days if dias_transcurridos <= 30: return {"acceso": True, "mensaje": f"Demo activa. Quedan {30 - dias_transcurridos} días."} else: return {"acceso": False, "mensaje": "Periodo de demo terminado. Acceso restringido."}