"""Contrôleur pour obtenir les informations d'un fichier/dossier""" from fastapi import APIRouter, HTTPException, Path from fastapi.responses import JSONResponse from nc_py_api import NextcloudException from utils import get_nextcloud_client, format_file_info router = APIRouter() @router.get("/info/{path:path}") async def file_info( path: str = Path( ..., description="Chemin du fichier/dossier", examples=["Documents/fichier.txt"] ) ): """ Obtient les informations détaillées d'un fichier ou dossier Args: path: Chemin du fichier/dossier Returns: JSON contenant les informations du fichier """ try: nc = get_nextcloud_client() # Normaliser le chemin file_path = "/" + path.strip("/") try: file_info_data = nc.files.by_path(file_path) except NextcloudException as e: if "404" in str(e): raise HTTPException( status_code=404, detail=f"Le fichier/dossier '{file_path}' n'existe pas" ) else: raise HTTPException( status_code=500, detail=f"Erreur Nextcloud: {str(e)}" ) return JSONResponse(content=format_file_info(file_info_data)) except HTTPException: raise except Exception as e: raise HTTPException( status_code=500, detail=f"Erreur interne: {str(e)}" )