private async Task <bool> AddArtist(RequestedModel request) { var index = await Api.GetIndex(Settings.ApiKey, Settings.FullUri); var artistExists = index.Any(x => x.ArtistID == request.ArtistId); bool artistAdd = false; if (!artistExists) { artistAdd = await Api.AddArtist(Settings.ApiKey, Settings.FullUri, request.ArtistId); Log.Info("Artist add result for {1}: {0}", artistAdd, request.ArtistName); } return(artistExists || artistAdd); }
private async Task <bool> AddArtist(RequestedModel request) { var index = await Api.GetIndex(Settings.ApiKey, Settings.FullUri); var artistExists = index.Any(x => x.ArtistID == request.ArtistId); if (!artistExists) { var artistAdd = Api.AddArtist(Settings.ApiKey, Settings.FullUri, request.ArtistId); Log.Info("Artist add result : {0}", artistAdd); } var counter = 0; while (index.All(x => x.ArtistID != request.ArtistId)) { Thread.Sleep(WaitTime); counter++; Log.Trace("Artist is still not present in the index. Counter = {0}", counter); index = await Api.GetIndex(Settings.ApiKey, Settings.FullUri); if (counter > CounterMax) { Log.Trace("Artist is still not present in the index. Counter = {0}. Returning false", counter); Log.Warn("We have tried adding the artist but it seems they are still not in headphones."); return(false); } } counter = 0; var artistStatus = index.Where(x => x.ArtistID == request.ArtistId).Select(x => x.Status).FirstOrDefault(); while (artistStatus != "Active") { Thread.Sleep(WaitTime); counter++; Log.Trace("Artist status {1}. Counter = {0}", counter, artistStatus); index = await Api.GetIndex(Settings.ApiKey, Settings.FullUri); artistStatus = index.Where(x => x.ArtistID == request.ArtistId).Select(x => x.Status).FirstOrDefault(); if (counter > CounterMax) { Log.Trace("Artist status is still not active. Counter = {0}. Returning false", counter); Log.Warn("The artist status is still not Active. We have waited long enough, seems to be a big delay in headphones."); return(false); } } var addedArtist = index.FirstOrDefault(x => x.ArtistID == request.ArtistId); var artistName = addedArtist?.ArtistName ?? string.Empty; counter = 0; while (artistName.Contains("Fetch failed")) { Thread.Sleep(WaitTime); await Api.RefreshArtist(Settings.ApiKey, Settings.FullUri, request.ArtistId); index = await Api.GetIndex(Settings.ApiKey, Settings.FullUri); artistName = index?.FirstOrDefault(x => x.ArtistID == request.ArtistId)?.ArtistName ?? string.Empty; counter++; if (counter > CounterMax) { Log.Trace("Artist fetch has failed. Counter = {0}. Returning false", counter); Log.Warn("Artist in headphones fetch has failed, we have tried refreshing the artist but no luck."); return(false); } } return(true); }