public async Task <SeriesChanges> HandleSeriesChanges(List <TmdbChange> tmdbChanges) { var seriesChanges = new SeriesChanges(); foreach (var tmdbChange in tmdbChanges) { var changeItemEnglish = tmdbChange.items.FirstOrDefault(i => i.iso_639_1 == "en"); var changeItemSingle = tmdbChange.items.SingleOrDefault(); switch (tmdbChange.key) { case "overview": if (changeItemEnglish != null) { seriesChanges.Overview = new Change <string>(changeItemEnglish.action, changeItemEnglish.ValueAs <string>()); } break; case "images": if (changeItemEnglish != null) { seriesChanges.PosterUriPostfix = new Change <string>(changeItemEnglish.action, changeItemEnglish.ValueAs <PosterChangeValue>().poster.file_path); } break; case "season": foreach (var seasonChange in tmdbChange.items) { var seasonTmdbId = seasonChange.ValueAs <SeasonChangeValue>().season_id; var seasonChanges = await TmdbService.GetSeasonChanges(seasonTmdbId); if (seasonChanges.Any()) { var changes = await HandleSeasonChanges(seasonChanges); seriesChanges.SeasonChanges.Add(new Change <SeasonChanges>(seasonChange.action, changes)); } } break; case "translations": case "certifications": break; default: Log.Warn($"Series - {tmdbChange.key} - {JsonConvert.SerializeObject( tmdbChange.items.FirstOrDefault() )}"); break; } } return(seriesChanges); }
public async Task UpdateTvShow(SeriesChanges tvShow, Token token) { using (var client = new HttpClient { BaseAddress = this.mySeriesApiBaseAddress, Timeout = new TimeSpan(0, 15, 0) }) { client.DefaultRequestHeaders.Add("Authorization", $"{token.TokenType} {token.AccessToken}"); var response = await client.PutAsJsonAsync("/api/TvShows", tvShow); if (!response.IsSuccessStatusCode) { if (response.Content != null) { throw new Exception($"Server error {response.StatusCode} - {await response.Content.ReadAsStringAsync()}"); } throw new Exception($"Server error {response.StatusCode}"); } } }