public async Task <DiscogsRelease> GetReleaseByTitle(string releaseTitle, string trackName, CancellationToken token)
        {
            var            releaseId        = 0;
            DiscogsRelease release          = null;
            var            searchParameters = new DiscogsSearchParameters()
            {
                query = releaseTitle, type = DiscogsSearchObjectType.release
            };
            var discogsSearchResults = await DiscogsSearch(searchParameters, token);

            var results = discogsSearchResults.ToList();

            foreach (var result in results)
            {
                //TODO: Add check for master releases
                release = GetReleaseById(result.id, token).Result;
                var tracks = release.tracklist;
                if (tracks.Any(arg => arg.title.Equals(trackName, StringComparison.InvariantCultureIgnoreCase)))
                {
                    releaseId = release.id;
                    break;
                }
            }
            return(releaseId == 0 ? null : release);
        }
        public async Task <IEnumerable <DiscogsSearchResult> > DiscogsSearch(DiscogsSearchParameters arg, CancellationToken token)
        {
            var prm      = arg.GetSearchString();
            var request  = new RestRequest(prm);
            var response = await ExecuteRequest <DiscogsSearchResults>(request, token);

            return(response.GetData());
        }
        public async Task <DiscogsArtist> GetArtistByName(string artistName, CancellationToken token)
        {
            var searchParameters = new DiscogsSearchParameters()
            {
                query = artistName, type = DiscogsSearchObjectType.artist
            };
            var results = await DiscogsSearch(searchParameters, token);

            var firstResult = results.FirstOrDefault();

            if (firstResult == null)
            {
                return(null);
            }
            return(await GetArtistById(firstResult.id, token));
        }