from fastapi import File, UploadFile, HTTPException, Depends from fastapi.security import HTTPAuthorizationCredentials from sqlalchemy.orm import Session from pathlib import Path from urllib.parse import urljoin from fastapi import Request BASE_URL = "http://127.0.0.1:8000" def get_upload_dir(user_id: int) -> Path: """Возвращает путь для сохранения файлов пользователя.""" upload_dir = Path(f"res/user/{user_id}") upload_dir.mkdir(parents=True, exist_ok=True) return upload_dir def get_poster_dir(poster_id: int) -> Path: """Возвращает путь для сохранения обложек постеров.""" poster_dir = Path(f"res/poster/{poster_id}") poster_dir.mkdir(parents=True, exist_ok=True) return poster_dir def save_file(file: UploadFile, target_dir: Path) -> Path: """Сохраняет файл в указанной директории и возвращает путь к файлу.""" file_path = target_dir / file.filename with open(file_path, "wb") as f: f.write(file.file.read()) return file_path def generate_file_url(request: Request, file_path: Path) -> str: """Генерирует URL для доступа к файлу.""" relative_path = file_path.relative_to(Path("res")) return urljoin(str(request.base_url), f"res/{relative_path}")