public virtual TvRageSeries GetSeries(int id) { var url = string.Format("http://services.tvrage.com/feeds/showinfo.php?key={0}&sid={1}", TVRAGE_APIKEY, id); var xmlStream = _httpProvider.DownloadStream(url, null); var xml = XDocument.Load(xmlStream); var s = xml.Descendants("Showinfo").First(); try { if(s.Element("showid") == null) { logger.Warn("TvRage did not return valid series info for id: {0}", id); return null; } var show = new TvRageSeries(); show.ShowId = s.Element("showid").ConvertTo<Int32>(); show.Name = s.Element("showname").Value; show.Link = s.Element("showlink").Value; show.Seasons = s.Element("seasons").ConvertTo<Int32>(); show.Started = s.Element("started").ConvertTo<Int32>(); show.StartDate = s.Element("startdate").ConvertTo<DateTime>(); show.Ended = s.Element("ended").ConvertTo<DateTime>(); show.OriginCountry = s.Element("origin_country").Value; show.Status = s.Element("status").Value; show.RunTime = s.Element("runtime").ConvertTo<Int32>(); show.Network = s.Element("network").Value; show.AirTime = s.Element("airtime").ConvertTo<DateTime>(); show.AirDay = s.Element("airday").ConvertToDayOfWeek(); show.UtcOffset = GetUtcOffset(s.Element("timezone").Value); return show; } catch (Exception ex) { logger.DebugException("Failed to parse ShowInfo for ID: " + id, ex); return null; } }
public void Setup() { _searchResults = Builder<TvRageSearchResult> .CreateListOfSize(5) .Build(); _series = Builder<Series> .CreateNew() .With(s => s.TvRageId = 0) .With(s => s.TvRageTitle = null) .With(s => s.UtcOffset = 0) .With(s => s.FirstAired = DateTime.Today.AddDays(-180)) .Build(); _episode = Builder<Episode> .CreateNew() .With(e => e.AirDate = DateTime.Today.AddDays(-365)) .Build(); _tvRageSeries = Builder<TvRageSeries> .CreateNew() .With(s => s.UtcOffset = -8) .Build(); Mocker.GetMock<EpisodeProvider>() .Setup(s => s.GetEpisode(_series.SeriesId, 1, 1)) .Returns(_episode); Mocker.GetMock<SceneMappingProvider>() .Setup(s => s.GetCleanName(_series.SeriesId)) .Returns(""); Mocker.GetMock<TvRageProvider>() .Setup(s => s.SearchSeries(_series.Title)) .Returns(_searchResults); Mocker.GetMock<TvRageProvider>() .Setup(s => s.GetSeries(_searchResults.First().ShowId)) .Returns(_tvRageSeries); }