nbroad's picture
Upload folder using huggingface_hub
dedd63e verified
Raw History Blame Contribute Delete
1.49 kB
import asyncio
from pathlib import Path
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from fetch_data import refresh_data
app = FastAPI(title="OpenRouter Provider Dashboard")
# Get the directory where this file is located
BASE_DIR = Path(__file__).parent
# Set up templates directory
templates = Jinja2Templates(directory=str(BASE_DIR / "templates"))
# Data directory - create if missing so refresh can populate it
data_dir = BASE_DIR / "data"
data_dir.mkdir(exist_ok=True)
app.mount("/data", StaticFiles(directory=str(data_dir)), name="data")
@app.get("/", response_class=HTMLResponse)
async def dashboard(request: Request):
"""Serve the main dashboard page"""
return templates.TemplateResponse("dashboard.html", {"request": request})
@app.post("/api/refresh")
async def api_refresh():
"""
Refresh data from OpenRouter provider pages.
Fetches chart data from all configured providers and saves to data/.
"""
loop = asyncio.get_event_loop()
data = await loop.run_in_executor(None, refresh_data, data_dir)
return {
"status": "ok",
"fetched_at": data["fetched_at"],
"summary": data["summary"],
}
@app.get("/health")
async def health():
"""Health check endpoint"""
return {"status": "ok"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=7860)