using System.Text.RegularExpressions; using System.Threading.Tasks; public abstract class SongValidatorBase : ISongValidator { public abstract Task ValidateAsync(Uri songUri); public abstract Task CanExtractSongMetadataAsync(Uri songUri); public abstract bool CanValidateUri(Uri songUri); public abstract SongProvider GetSongProvider(); protected SpotifyApiClient _spotifyApiClient; protected ILogger _logger; public SongValidatorBase(ILogger logger, SpotifyApiClient spotifyApiClient) { _spotifyApiClient = spotifyApiClient; _logger = logger; } protected async Task LookupSpotifyIdAsync(string songName, string songArtist) { var candidates = await _spotifyApiClient.GetTrackCandidatesAsync(songName, songArtist); return candidates.Any() ? candidates[0].Id : ""; } }