Datasourceforcryptocurrency-1 / api /resources_endpoint.py
Really-amin's picture
Upload folder using huggingface_hub
b51f3c0 verified
Raw
History Blame Contribute Delete
2.75 kB
"""
Resources Endpoint - API router for resource statistics (patched for real registry data).
"""
from datetime import datetime
from typing import Any, Dict
from fastapi import APIRouter
router = APIRouter(prefix="/api/resources", tags=["resources"])
def _registry_stats() -> Dict[str, Any]:
try:
import hf_unified_server as server
summary, categories = server._summarize_resources()
return {
"total": summary.get("total", 0),
"active": summary.get("free", 0) + summary.get("premium", 0),
"free": summary.get("free", 0),
"premium": summary.get("premium", 0),
"categories": categories,
"registry_loaded": bool(getattr(server, "_RESOURCES_CACHE", None)),
}
except Exception:
try:
from unified_resource_loader import get_loader
loader = get_loader()
stats = loader.get_stats()
categories = [
{"name": cat, "count": count}
for cat, count in stats.get("categories", {}).items()
]
return {
"total": stats.get("total_resources", 0),
"active": stats.get("total_resources", 0),
"free": stats.get("free_resources", 0),
"premium": stats.get("auth_required", 0),
"categories": categories,
"registry_loaded": loader.loaded,
}
except Exception:
return {"total": 0, "active": 0, "categories": [], "registry_loaded": False}
@router.get("/stats")
async def resources_stats() -> Dict[str, Any]:
"""Get resource statistics from unified registry."""
data = _registry_stats()
data["timestamp"] = datetime.utcnow().isoformat() + "Z"
data["success"] = True
return data
@router.get("/list")
async def resources_list() -> Dict[str, Any]:
"""Get list of all resources."""
try:
from unified_resource_loader import get_loader
loader = get_loader()
resources = [
{
"id": r.id,
"name": r.name,
"category": r.category,
"base_url": r.base_url,
"requires_auth": r.requires_auth(),
}
for r in loader.resources.values()
]
return {
"success": True,
"resources": resources,
"total": len(resources),
"timestamp": datetime.utcnow().isoformat() + "Z",
}
except Exception as exc:
return {
"success": False,
"resources": [],
"total": 0,
"error": str(exc),
"timestamp": datetime.utcnow().isoformat() + "Z",
}