Bulk-Image-API / app.py
userIdc2024's picture
Update app.py
67b4e4b verified
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel, HttpUrl, conint
from typing import List
from main import get_images
app = FastAPI(title="Images API", version="1.0.0")
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"],
)
class ImageItem(BaseModel):
ref_url: HttpUrl
num: conint(ge=1)
class GenerateRequest(BaseModel):
items: List[ImageItem]
class ImageResult(BaseModel):
ref_url: HttpUrl
urls: List[HttpUrl]
class GenerateResponse(BaseModel):
urls: List[ImageResult]
@app.get("/health")
def health():
return {"ok": True}
def _generate_impl(req: GenerateRequest):
try:
urls = get_images(req.dict()) # get_images expects {"items":[...]}
if not isinstance(urls, list):
raise ValueError("get_images must return a List[ImageResult-like dicts]")
return {"urls": urls}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@app.post("/generate", response_model=GenerateResponse)
def generate(req: GenerateRequest):
return _generate_impl(req)