feat: Agrega primera version de template (revisar archivo de documentacion - docs.md)

This commit is contained in:
Francisco Pineda
2026-03-15 08:44:25 +01:00
parent d433942981
commit 4d6152a9fe
45 changed files with 1151 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
"""
Validadores comunes para los endpoints de audio.
"""
import os
from fastapi import UploadFile, HTTPException
from app.schemas.audio_standard import AudioRequestFile
# Configuración de validaciones
ALLOWED_AUDIO_FORMATS = ["audio/mpeg", "audio/wav", "audio/x-wav", "audio/mp4", "audio/x-m4a"]
ALLOWED_EXTENSIONS = [".mp3", ".wav", ".m4a"]
MAX_AUDIO_SIZE_MB = 25 # Tamaño máximo en MB
MAX_AUDIO_SIZE_BYTES = MAX_AUDIO_SIZE_MB * 1024 * 1024
def validate_audio_file(audio_file: UploadFile) -> None:
"""
Valida el formato y tamaño del archivo de audio.
Args:
audio_file: Archivo de audio a validar
Raises:
HTTPException: Si el archivo no cumple con los requisitos
"""
# Validar formato (content-type)
if audio_file.content_type not in ALLOWED_AUDIO_FORMATS:
raise HTTPException(
status_code=400,
detail=f"Formato de audio no válido. Solo se permiten: MP3, WAV, M4A"
)
# Validar extensión del archivo
file_extension = os.path.splitext(audio_file.filename)[1].lower()
if file_extension not in ALLOWED_EXTENSIONS:
raise HTTPException(
status_code=400,
detail=f"Extensión de archivo no válida. Solo se permiten: .mp3, .wav, .m4a"
)
def validate_audio_size(audio_content: bytes) -> None:
"""
Valida el tamaño del contenido del audio.
Args:
audio_content: Contenido del archivo de audio en bytes
Raises:
HTTPException: Si el archivo excede el tamaño máximo
"""
if len(audio_content) > MAX_AUDIO_SIZE_BYTES:
raise HTTPException(
status_code=400,
detail=f"El archivo excede el tamaño máximo permitido de {MAX_AUDIO_SIZE_MB}MB"
)
def validate_audio_request(audio_request: AudioRequestFile, audio_content: bytes):
# Validar el archivo de audio
validate_audio_file(audio_request.file)
# Validar tamaño del archivo
validate_audio_size(audio_content)