Spaces:
Build error
Build error
# tracklight_server/api/artifacts.py | |
from fastapi import APIRouter, Depends, UploadFile, File | |
from fastapi.responses import FileResponse | |
from .auth import verify_token | |
import os | |
import shutil | |
router = APIRouter() | |
# Get the absolute path to the artifacts directory | |
SERVER_DIR = os.path.dirname(os.path.dirname(__file__)) | |
ARTIFACTS_DIR = os.path.join(SERVER_DIR, "artifacts") | |
# Create artifacts directory if it doesn't exist | |
os.makedirs(ARTIFACTS_DIR, exist_ok=True) | |
async def upload_artifact(run_id: str, file: UploadFile = File(...), token: str = Depends(verify_token)): | |
""" | |
Uploads an artifact file for a given run. | |
""" | |
run_artifact_dir = os.path.join(ARTIFACTS_DIR, run_id) | |
os.makedirs(run_artifact_dir, exist_ok=True) | |
file_path = os.path.join(run_artifact_dir, file.filename) | |
with open(file_path, "wb") as buffer: | |
shutil.copyfileobj(file.file, buffer) | |
return {"filename": file.filename, "run_id": run_id} | |
async def download_artifact(run_id: str, filename: str, token: str = Depends(verify_token)): | |
""" | |
Downloads an artifact file for a given run. | |
""" | |
file_path = os.path.join(ARTIFACTS_DIR, run_id, filename) | |
if not os.path.exists(file_path): | |
return {"error": "File not found"} | |
return FileResponse(file_path) | |