forked from ericorps/ia-microservice
feat: Agrega primera version de template (revisar archivo de documentacion - docs.md)
This commit is contained in:
62
app/utilities/audio_utilities.py
Normal file
62
app/utilities/audio_utilities.py
Normal 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)
|
||||
Reference in New Issue
Block a user