| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- from fastapi import FastAPI, HTTPException
- from pydantic import BaseModel, Field
- import uvicorn
- import sys
- import os
- # Add liblibai_controlnet to path so we can reuse its OSS infrastructure
- liblib_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../liblibai_controlnet"))
- if liblib_dir not in sys.path:
- sys.path.insert(0, liblib_dir)
- try:
- from liblibai_client import LibLibAIClient
- except ImportError:
- LibLibAIClient = None
- app = FastAPI(title="LibLib Image Uploader Proxy")
- class UploadRequest(BaseModel):
- image_base64: str = Field(..., description="Base64 encoded image data (e.g. data:image/png;base64,iVBORw0...)")
- filename: str = Field("image.png", description="Optional filename for extension detection")
- @app.post("/upload")
- async def upload_image(req: UploadRequest):
- if not LibLibAIClient:
- raise HTTPException(status_code=500, detail="LibLibAIClient module not found")
-
- try:
- client = LibLibAIClient()
- # Ensure it has basic prefix logic if omitted, though upload_base64_image handles 'data:image...' natively
- raw_b64 = req.image_base64
- url = client.upload_base64_image(raw_b64)
- return {"url": url, "status": "success"}
- except Exception as e:
- raise HTTPException(status_code=500, detail=str(e))
- @app.get("/health")
- async def health():
- return {"status": "ok"}
- if __name__ == "__main__":
- port = int(sys.argv[sys.argv.index("--port") + 1]) if "--port" in sys.argv else 8004
- uvicorn.run(app, host="0.0.0.0", port=port)
|