30 lines
999 B
Python
30 lines
999 B
Python
from fastapi import APIRouter
|
|
from fastapi.openapi.models import MediaType
|
|
from starlette.exceptions import HTTPException
|
|
from starlette.requests import Request
|
|
from starlette.responses import Response, JSONResponse
|
|
|
|
from repos.dao import DAO
|
|
|
|
router = APIRouter(prefix="/api/assets", tags=["Assets"])
|
|
|
|
@router.get("/{asset_id}")
|
|
async def get_asset(asset_id: str, request: Request) -> Response:
|
|
dao = request.app.state.dao
|
|
asset = await dao.assets.get_asset(asset_id)
|
|
# 2. Проверка на существование
|
|
if not asset:
|
|
raise HTTPException(status_code=404, detail="Asset not found")
|
|
return Response(content=asset.data, media_type="image/png")
|
|
|
|
|
|
@router.get("")
|
|
async def get_assets(request: Request) -> JSONResponse:
|
|
dao: DAO = request.app.state.dao
|
|
assets = await dao.assets.get_assets()
|
|
assets_links = []
|
|
for asset in assets:
|
|
assets_links.append("/api/assets/{}".format(asset.id))
|
|
return JSONResponse(content=assets_links)
|
|
|