Spaces:
Sleeping
Sleeping
File size: 1,208 Bytes
54ffbd3 67b4e4b 54ffbd3 f3f8d65 54ffbd3 67b4e4b 54ffbd3 67b4e4b 54ffbd3 67b4e4b 54ffbd3 67b4e4b 54ffbd3 67b4e4b 54ffbd3 67b4e4b 54ffbd3 67b4e4b |
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 44 45 |
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)
|