public async Task Test_ImageObjectJsonWriter_WriteObject_StringWriter_Exceptions() { var traktJsonWriter = new ImageObjectJsonWriter(); ITraktImage traktImage = new TraktImage(); Func <Task <string> > action = () => traktJsonWriter.WriteObjectAsync(default(StringWriter), traktImage); await action.Should().ThrowAsync <ArgumentNullException>(); }
public override async Task <ITraktImage> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default) { if (jsonReader == null) { return(await Task.FromResult(default(ITraktImage))); } if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject) { ITraktImage traktImage = new TraktImage(); while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName) { var propertyName = jsonReader.Value.ToString(); switch (propertyName) { case JsonProperties.IMAGE_PROPERTY_NAME_FULL: traktImage.Full = await jsonReader.ReadAsStringAsync(cancellationToken); break; default: await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken); break; } } return(traktImage); } return(await Task.FromResult(default(ITraktImage))); }
public void Test_ImageObjectJsonWriter_WriteObject_JsonWriter_Exceptions() { var traktJsonWriter = new ImageObjectJsonWriter(); ITraktImage traktImage = new TraktImage(); Func <Task> action = () => traktJsonWriter.WriteObjectAsync(default(JsonTextWriter), traktImage); action.Should().Throw <ArgumentNullException>(); }
public async Task Test_ImageObjectJsonWriter_WriteObject_Object_Complete() { ITraktImage traktImage = new TraktImage { Full = "fullPath" }; var traktJsonWriter = new ImageObjectJsonWriter(); string json = await traktJsonWriter.WriteObjectAsync(traktImage); json.Should().Be(@"{""full"":""fullPath""}"); }
public async Task Test_ImageObjectJsonWriter_WriteObject_JsonWriter_Complete() { ITraktImage traktImage = new TraktImage { Full = "fullPath" }; using (var stringWriter = new StringWriter()) using (var jsonWriter = new JsonTextWriter(stringWriter)) { var traktJsonWriter = new ImageObjectJsonWriter(); await traktJsonWriter.WriteObjectAsync(jsonWriter, traktImage); stringWriter.ToString().Should().Be(@"{""full"":""fullPath""}"); } }
private void SendWatchListEpisodesToFacade(IEnumerable<TraktWatchListEpisode> shows) { // clear facade GUIControl.ClearControl(GetID, Facade.GetID); if (shows.Count() == 0) { GUIUtils.ShowNotifyDialog(GUIUtils.PluginName(), string.Format(Translation.NoEpisodeWatchList, CurrentUser)); CurrentUser = TraktSettings.Username; GUIWindowManager.ShowPreviousWindow(); return; } int itemCount = 0; List<TraktImage> showImages = new List<TraktImage>(); // Add each show and underlying episodes // Should we do facade levels (Series,Season,Episodes)? foreach (var show in shows) { foreach (var episode in show.Episodes) { string itemLabel = string.Format("{0} - {1}x{2}{3}", show.Title, episode.Season.ToString(), episode.Number.ToString(), string.IsNullOrEmpty(episode.Title) ? string.Empty : " - " + episode.Title); GUITraktWatchListEpisodeListItem item = new GUITraktWatchListEpisodeListItem(itemLabel); // add image for download TraktImage images = new TraktImage { EpisodeImages = episode.Images, ShowImages = show.Images }; showImages.Add(images); item.Label2 = episode.FirstAired.FromEpoch().ToShortDateString(); item.TVTag = new KeyValuePair<TraktShow, TraktWatchListEpisode.Episode>(show, episode); item.Item = images; item.ItemId = Int32.MaxValue - itemCount; item.IconImage = "defaultTraktEpisode.png"; item.IconImageBig = "defaultTraktEpisodeBig.png"; item.ThumbnailImage = "defaultTraktEpisodeBig.png"; item.OnItemSelected += OnEpisodeSelected; Utils.SetDefaultIcons(item); Facade.Add(item); itemCount++; } } // Set Facade Layout Facade.SetCurrentLayout(Enum.GetName(typeof(Layout), CurrentLayout)); GUIControl.FocusControl(GetID, Facade.GetID); if (PreviousSelectedIndex >= itemCount) Facade.SelectIndex(PreviousSelectedIndex - 1); else Facade.SelectIndex(PreviousSelectedIndex); // set facade properties GUIUtils.SetProperty("#itemcount", itemCount.ToString()); GUIUtils.SetProperty("#Trakt.Items", string.Format("{0} {1}", itemCount.ToString(), itemCount > 1 ? Translation.Episodes : Translation.Episode)); // Download episode images Async and set to facade GetImages(showImages); }
private void SendCalendarToFacade(IEnumerable<TraktCalendar> calendar) { // check if we got a bad response if (calendar.Count() < PreviousCalendarDayCount) { GUIUtils.ShowNotifyDialog(GUIUtils.PluginName(), Translation.ErrorCalendar); // set defaults _CalendarMyShows = null; _CalendarPremieres = null; _CalendarAllShows = null; LastRequest = new DateTime(); return; } // clear facade GUIControl.ClearControl(GetID, Facade.GetID); int itemCount = 0; List<TraktImage> showImages = new List<TraktImage>(); // Add each days episodes to the list // Use Label3 of facade for Day/Group Idenitfier foreach (var day in calendar) { // apply watch list filter var episodes = day.Episodes; if (CurrentCalendar == CalendarType.MyShows) { if (TraktSettings.CalendarHideTVShowsInWatchList) { episodes = day.Episodes.Where(e => !e.Show.InWatchList).ToList(); } } if (episodes.Count > 0) { // add day header GUIListItem item = new GUIListItem(); item.Label3 = DateTime.Parse(day.ToString()).ToLongDateString(); item.IconImage = "defaultTraktCalendar.png"; item.IconImageBig = "defaultTraktCalendarBig.png"; item.ThumbnailImage = "defaultTraktCalendarBig.png"; item.OnItemSelected += OnCalendarDateSelected; Utils.SetDefaultIcons(item); Facade.Add(item); foreach (var episode in episodes) { GUITraktCalendarListItem episodeItem = new GUITraktCalendarListItem(episode.ToString()); // add image for download TraktImage images = new TraktImage { EpisodeImages = episode.Episode.Images, ShowImages = episode.Show.Images }; showImages.Add(images); // extended skin properties episode.Date = DateTime.Parse(day.ToString()).ToLongDateString(); episode.SelectedIndex = (itemCount + 1).ToString(); episodeItem.Item = images; episodeItem.TVTag = episode; episodeItem.ItemId = Int32.MaxValue - itemCount; episodeItem.IsPlayed = episode.Episode.Watched; episodeItem.IconImage = "defaultTraktEpisode.png"; episodeItem.IconImageBig = "defaultTraktEpisodeBig.png"; episodeItem.ThumbnailImage = "defaultTraktEpisodeBig.png"; episodeItem.OnItemSelected += OnEpisodeSelected; Utils.SetDefaultIcons(episodeItem); Facade.Add(episodeItem); itemCount++; } } } // if nothing airing this week, then indicate to user if (!IsCached && (calendar.Count() == PreviousCalendarDayCount)) { GUIListItem item = new GUIListItem(); item.Label3 = Translation.NoEpisodesThisWeek; item.IconImage = "defaultTraktCalendar.png"; item.IconImageBig = "defaultTraktCalendarBig.png"; item.ThumbnailImage = "defaultTraktCalendarBig.png"; item.OnItemSelected += OnCalendarDateSelected; Utils.SetDefaultIcons(item); Facade.Add(item); // Stay on Next Week Item if (PreviousSelectedIndex > 0) PreviousSelectedIndex--; } // Add Next Week Item so user can fetch next weeks calendar GUIListItem nextItem = new GUIListItem(Translation.NextWeek); nextItem.IconImage = "traktNextWeek.png"; nextItem.IconImageBig = "traktNextWeek.png"; nextItem.ThumbnailImage = "traktNextWeek.png"; nextItem.OnItemSelected += OnNextWeekSelected; nextItem.IsFolder = true; Facade.Add(nextItem); // Set Facade Layout Facade.SetCurrentLayout("List"); GUIControl.FocusControl(GetID, Facade.GetID); // Set the first episode on calendar on initial request (Index 0 is a day header), // Set last position if paging to next week if (!IsCached) Facade.SelectIndex(PreviousSelectedIndex + 1); else // If cached just set to last position Facade.SelectIndex(PreviousSelectedIndex); // set facade properties GUIUtils.SetProperty("#itemcount", itemCount.ToString()); GUIUtils.SetProperty("#Trakt.Items", string.Format("{0} {1}", itemCount.ToString(), itemCount > 1 ? Translation.Episodes : Translation.Episode)); // Download episode images Async and set to facade GetImages(showImages); }
public void TestTraktImageDefaultConstructor() { var image = new TraktImage(); image.Full.Should().BeNullOrEmpty(); }
public void Test_TraktImage_Default_Constructor() { var traktImage = new TraktImage(); traktImage.Full.Should().BeNull(); }