from fastapi import FastAPI, HTTPException, Depends from fastapi.responses import JSONResponse import os app = FastAPI(title="OpenCode API") # 从环境变量获取预期的 token EXPECTED_TOKEN = os.getenv("ACCESS_TOKEN", "default_token") # Token 认证依赖 def verify_token(access_token: str): if access_token != EXPECTED_TOKEN: raise HTTPException(status_code=401, detail="Invalid access token") return access_token @app.get("/") async def root(): return {"message": "OpenCode API is running"} @app.get("/health") async def health_check(): return {"status": "healthy"} @app.get("/{access_token}/api/data") async def get_data(access_token: str = Depends(verify_token)): return {"data": "This is protected data"} @app.get("/{access_token}/api/info") async def get_info(access_token: str = Depends(verify_token)): return {"info": "Protected information", "token": access_token} @app.get("/{access_token}/") async def protected_root(access_token: str = Depends(verify_token)): return {"message": "Welcome to protected area"}