Spaces:
Running
on
Zero
Running
on
Zero
File size: 1,910 Bytes
aad9d66 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
"""
Request validation utilities
"""
from typing import Dict, Optional
def validate_generation_params(data: Dict) -> Optional[str]:
"""
Validate music generation parameters
Args:
data: Request data dictionary
Returns:
Error message if validation fails, None otherwise
"""
if not data:
return "Request body is required"
if 'prompt' not in data:
return "Missing required field: prompt"
if not data['prompt'] or not data['prompt'].strip():
return "Prompt cannot be empty"
if 'duration' in data:
duration = data['duration']
if not isinstance(duration, (int, float)):
return "Duration must be a number"
if duration < 10 or duration > 120:
return "Duration must be between 10 and 120 seconds"
if 'use_vocals' in data:
if not isinstance(data['use_vocals'], bool):
return "use_vocals must be a boolean"
if data['use_vocals'] and not data.get('lyrics'):
return "Lyrics are required when use_vocals is true"
return None
def validate_clip_data(data: Dict) -> Optional[str]:
"""
Validate timeline clip data
Args:
data: Clip data dictionary
Returns:
Error message if validation fails, None otherwise
"""
required_fields = ['clip_id', 'file_path', 'duration', 'position']
for field in required_fields:
if field not in data:
return f"Missing required field: {field}"
if not isinstance(data['duration'], (int, float)) or data['duration'] <= 0:
return "Duration must be a positive number"
valid_positions = ['intro', 'previous', 'next', 'outro']
if data['position'] not in valid_positions:
return f"Invalid position. Must be one of: {', '.join(valid_positions)}"
return None
|