36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
import os
|
|
from fastapi import APIRouter, HTTPException
|
|
from fastapi.responses import FileResponse
|
|
from typing import List
|
|
|
|
router = APIRouter()
|
|
|
|
MODELS_DIRECTORY = "models"
|
|
|
|
@router.get("/models", response_model=List[str])
|
|
async def get_model_list():
|
|
"""
|
|
사용 가능한 모든 OBJ 모델의 이름 목록을 반환합니다.
|
|
"""
|
|
try:
|
|
files = os.listdir(MODELS_DIRECTORY)
|
|
obj_models = [f.split('.obj')[0] for f in files if f.endswith(".obj")]
|
|
return obj_models
|
|
except FileNotFoundError:
|
|
raise HTTPException(status_code=404, detail="Models directory not found")
|
|
|
|
@router.get("/models/{model_name}")
|
|
async def get_model(model_name: str):
|
|
"""
|
|
지정된 이름의 OBJ 모델 파일을 반환합니다.
|
|
"""
|
|
if not model_name.endswith(".obj"):
|
|
model_name += ".obj"
|
|
|
|
file_path = os.path.join(MODELS_DIRECTORY, model_name)
|
|
|
|
if not os.path.exists(file_path):
|
|
raise HTTPException(status_code=404, detail="Model not found")
|
|
|
|
return FileResponse(file_path, media_type='application/octet-stream', filename=model_name)
|