mirror of
http://88.130.71.182:3000/BlitTech/deals24togo_be.git
synced 2026-06-13 10:49:55 +00:00
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
"""File upload endpoints."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from fastapi import APIRouter, Depends, File, UploadFile
|
|
|
|
from app.middleware.auth import get_current_user
|
|
from app.services.upload_service import UploadService
|
|
|
|
router = APIRouter(prefix="/uploads", tags=["Uploads"])
|
|
|
|
|
|
@router.post("/image")
|
|
async def upload_image(
|
|
file: UploadFile = File(...),
|
|
user: dict = Depends(get_current_user),
|
|
):
|
|
"""Upload an image and return its public URL."""
|
|
contents = await file.read()
|
|
svc = UploadService()
|
|
url = svc.upload_image(
|
|
file_bytes=contents,
|
|
content_type=file.content_type or "image/jpeg",
|
|
folder=f"users/{user['id']}",
|
|
)
|
|
return {"url": url}
|
|
|
|
|
|
@router.post("/images")
|
|
async def upload_multiple_images(
|
|
files: list[UploadFile] = File(...),
|
|
user: dict = Depends(get_current_user),
|
|
):
|
|
"""Upload multiple images and return their public URLs."""
|
|
svc = UploadService()
|
|
urls = []
|
|
for f in files:
|
|
contents = await f.read()
|
|
url = svc.upload_image(
|
|
file_bytes=contents,
|
|
content_type=f.content_type or "image/jpeg",
|
|
folder=f"users/{user['id']}",
|
|
)
|
|
urls.append(url)
|
|
return {"urls": urls}
|
|
|
|
|
|
@router.delete("/")
|
|
async def delete_image(url: str, user: dict = Depends(get_current_user)):
|
|
"""Delete an image by URL."""
|
|
svc = UploadService()
|
|
success = svc.delete_image(url)
|
|
return {"deleted": success}
|