Bulk-Image-API / app.py
userIdc2024's picture
Update app.py
67b4e4b verified
raw
history blame
1.21 kB
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)