File size: 1,259 Bytes
050a103
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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]]}