upd / web_server.py
cursorpro's picture
Upload 7 files
050a103 verified
from fastapi import FastAPI, Request
from fastapi.templating import Jinja2Templates
from fastapi.staticfiles import StaticFiles
from fastapi.responses import HTMLResponse
import uvicorn
from proxy_manager import ProxyManager
from updater import ProxyUpdater
import logging
app = FastAPI()
templates = Jinja2Templates(directory="templates")
# These will be injected from main.py
proxy_manager: ProxyManager = None
updater: ProxyUpdater = None
def init_app(pm: ProxyManager, up: ProxyUpdater):
global proxy_manager, updater
proxy_manager = pm
updater = up
@app.get("/", response_class=HTMLResponse)
async def read_root(request: Request):
return templates.TemplateResponse("index.html", {"request": request})
@app.get("/api/status")
async def get_status():
if not proxy_manager:
return {"best_proxy": None, "total_available": 0}
best = proxy_manager.best_proxy.to_dict() if proxy_manager.best_proxy else None
return {
"best_proxy": best,
"total_available": len(proxy_manager.proxies)
}
@app.get("/api/proxies")
async def get_proxies():
if not proxy_manager:
return {"proxies": []}
# Return top 50 proxies
return {"proxies": [p.to_dict() for p in proxy_manager.proxies[:50]]}