package utils import ( "errors" "net/url" "strings" ) // Erreurs de validation pour les playlists var ( ErrPlaylistTitleRequired = errors.New("playlist title is required") ErrPlaylistTitleTooLong = errors.New("playlist title must be less than 200 characters") ErrPlaylistDescTooLong = errors.New("playlist description must be less than 2000 characters") ErrInvalidCoverURL = errors.New("invalid cover URL format") ErrCoverURLTooLong = errors.New("cover URL must be less than 500 characters") ) // ValidatePlaylistTitle valide le titre d'une playlist // T0455: Validation du titre (requis, max 200 caractères) func ValidatePlaylistTitle(title string) error { if strings.TrimSpace(title) == "" { return ErrPlaylistTitleRequired } if len(title) > 200 { return ErrPlaylistTitleTooLong } return nil } // ValidatePlaylistDescription valide la description d'une playlist // T0455: Validation de la description (max 2000 caractères) func ValidatePlaylistDescription(description string) error { if len(description) > 2000 { return ErrPlaylistDescTooLong } return nil } // ValidateCoverURL valide l'URL de la couverture d'une playlist // T0455: Validation de l'URL (format valide, http/https, max 500 caractères) func ValidateCoverURL(coverURL string) error { if coverURL == "" { return nil // Optional field } parsedURL, err := url.Parse(coverURL) if err != nil { return ErrInvalidCoverURL } if parsedURL.Scheme != "http" && parsedURL.Scheme != "https" { return ErrInvalidCoverURL } if len(coverURL) > 500 { return ErrCoverURLTooLong } return nil }