"""Track validation.""" from switchboard_consumer.constants.track_type import TRACK, UNKNOWN from switchboard_consumer.logic.validation.track.validators import \ validate_pline, validate_track_samples_names_unique, validate_track_type from switchboard_consumer.utils.message import \ create_processing_result, create_track_identifiers def validate_track(track, message): """Validate a track.""" error_messages = [] track_type = track.get('trackType', UNKNOWN) isrc = track.get('isrc', UNKNOWN) invalid_track_types = validate_track_type(track_type, isrc) if invalid_track_types: error_messages.append(invalid_track_types) samples = track.get('samples', []) if samples: invalid_not_unique_samples = validate_track_samples_names_unique( samples) if invalid_not_unique_samples: error_messages.append(validate_track_samples_names_unique) pline = track.get('pLine', '') invalid_p_line = validate_pline(pline) if invalid_p_line: error_messages.append(invalid_p_line) track_ids = track.get('ids', []) identifiers = create_track_identifiers(track_ids, isrc) if error_messages: return create_processing_result( identifiers, message, entity_type=TRACK, errors=error_messages)