Spaces:
Runtime error
Runtime error
File size: 1,811 Bytes
342d3dd ced9a7f 342d3dd ced9a7f 342d3dd ced9a7f 342d3dd | 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 46 47 48 49 50 51 52 53 54 55 56 57 | from fastapi import APIRouter
from src.libs.s3 import s3resource
from src.models.view import ViewResult, ViewImage
from src.models.main import User, Method
from uuid import UUID
router = APIRouter(
prefix="/view",
tags=["View"],
responses={404: {"description": "Not found"}},
)
BUCKET_NAME = "pimthaigans-image-container"
@router.get("/status")
async def status():
return {"status": "OK"}
@router.post("/")
async def view(user: User) -> ViewResult:
s3 = s3resource()
bucket = s3.Bucket('pimthaigans-image-container')
objs = list(bucket.objects.filter(Prefix=f'{user.uuid}/'))
path_objs = [obj.key for obj in objs]
result: ViewResult = await view_all(user, path_objs)
return result
async def view_index(user: User, index: int, path_objs) -> ViewResult:
imgs = [obj for obj in path_objs if obj.endswith(
f'{str(index).zfill(2)}.png')]
if len(imgs) > 0:
img_url = f'https://{BUCKET_NAME}.s3.amazonaws.com/{imgs[0]}'
return ViewResult(user=user, method=Method.index, result=[ViewImage(index=index, image_url=img_url)])
return ViewResult(user=user, method=Method.index, result=None)
async def view_all(user: User, path_objs) -> ViewResult:
img_urls = []
for index in range(0, 88):
imgs = [obj for obj in path_objs if obj.endswith(
f'{str(index).zfill(2)}.png')]
if len(imgs) > 0:
img_urls.append(
f'https://{BUCKET_NAME}.s3.amazonaws.com/{imgs[0]}')
else:
return ViewResult(user=user, method=Method.all, result=None)
return ViewResult(user=user, method=Method.all,
result=[ViewImage(index=index, image_url=img_url) for index, img_url in enumerate(img_urls)])
|