public async Task <SearchArtistResults> SearchArtistsAsync(string genre, string fromYear = "", string toYear = "") { HttpClient client = GetDefaultClient(); string url = "/v1/search?q=tag%3Ahipster%20"; if (!string.IsNullOrWhiteSpace(genre)) { genre = genre.Replace(" ", "%20").Replace("\"", ""); url += "genre%3A%22" + genre + "%22"; } if (!string.IsNullOrWhiteSpace(fromYear) && !string.IsNullOrWhiteSpace(toYear)) { url += "year%3A" + fromYear + "-" + toYear; } else if (!string.IsNullOrWhiteSpace(fromYear) || !string.IsNullOrWhiteSpace(toYear)) { url += "year%3A" + fromYear + toYear; } url += "&type=artist"; string response = await client.GetStringAsync(url); SearchArtistResults artistResponse = JsonConvert.DeserializeObject <SearchArtistResults>(response); return(artistResponse); }
public async Task <ResultViewModel> GetUrlSearchResult(string url) { Search searchSpotifyApi = new Search(); SearchArtistResults searchResults = await searchSpotifyApi.SearchNextArtistsAsync(url); ResultViewModel finalResults = await searchSpotifyApi.GeneratePresentationModel(searchResults); return(finalResults); }
public async Task <SearchArtistResults> SearchNextArtistsAsync(string nextUrl) { HttpClient client = GetDefaultClient(); string response = await client.GetStringAsync(nextUrl); SearchArtistResults artistResponse = JsonConvert.DeserializeObject <SearchArtistResults>(response); return(artistResponse); }
public async Task <ResultViewModel> GetSearchResult(SearchCriteria searchCriteria) { Search searchSpotifyApi = new Search(); SearchArtistResults searchResults = await searchSpotifyApi.SearchArtistsAsync(searchCriteria.Genre, searchCriteria.FromYear, searchCriteria.ToYear); ResultViewModel finalResults = await searchSpotifyApi.GeneratePresentationModel(searchResults); return(finalResults); }
public async Task <ResultViewModel> GeneratePresentationModel(SearchArtistResults searchResults) { SearchTrackResults searchTracks; BaseTrack previewTrack; ResultViewModel finalResults = new ResultViewModel(); finalResults.viewArtists = new List <ViewArtist>(); finalResults.Limit = searchResults.Artists.Limit; finalResults.Next = searchResults.Artists.Next; finalResults.Total = searchResults.Artists.Total; finalResults.Previous = searchResults.Artists.Previous; finalResults.Offset = searchResults.Artists.Offset; foreach (var artist in searchResults.Artists.Items) { ViewArtist viewArtist = new ViewArtist(artist); searchTracks = await SearchTracksAsync(artist.Name); if (searchTracks.Tracks.Items.Count() != 0) { previewTrack = searchTracks.Tracks.Items.FirstOrDefault(x => x.PreviewURL != null); if (previewTrack != null) { viewArtist.PreviewTrack = new ViewTrack(previewTrack); viewArtist.HasPreviewTrack = true; viewArtist.HasTracks = true; } else { viewArtist.PreviewTrack = new ViewTrack(searchTracks.Tracks.Items[0]); viewArtist.HasPreviewTrack = false; viewArtist.HasTracks = true; } } else { viewArtist.HasPreviewTrack = false; viewArtist.HasTracks = false; } finalResults.viewArtists.Add(viewArtist); } return(finalResults); }