|
|
from fastapi import FastAPI, Request, HTTPException
|
|
|
from pydantic import BaseModel
|
|
|
import os
|
|
|
import requests
|
|
|
|
|
|
app = FastAPI(title="Hakayti Proxy API")
|
|
|
|
|
|
UPSTREAM_URL = os.getenv("UPSTREAM_URL", "https://placeholder.invalid")
|
|
|
API_KEY = os.getenv("API_KEY", "my_secret_key_123")
|
|
|
|
|
|
class StoryRequest(BaseModel):
|
|
|
name: str
|
|
|
hobby: str
|
|
|
|
|
|
@app.post("/generate")
|
|
|
async def generate(req: StoryRequest, request: Request):
|
|
|
header_key = request.headers.get("x-api-key") or request.headers.get("authorization")
|
|
|
if API_KEY and header_key not in (API_KEY, f"Bearer {API_KEY}"):
|
|
|
raise HTTPException(status_code=401, detail="Unauthorized")
|
|
|
|
|
|
try:
|
|
|
r = requests.post(
|
|
|
f"{UPSTREAM_URL}/generate",
|
|
|
headers={"x-api-key": API_KEY},
|
|
|
json=req.dict(),
|
|
|
timeout=120
|
|
|
)
|
|
|
r.raise_for_status()
|
|
|
except Exception as e:
|
|
|
raise HTTPException(status_code=502, detail=f"Kaggle upstream error: {e}")
|
|
|
|
|
|
return r.json()
|
|
|
|