public void Parse_Episode_306213_Test() { var sampleEpisodeRaw = SampleDataHelper.GetText(SampleDataHelper.SampleData.Episode306213); var episode = _episodeParseService.Parse(sampleEpisodeRaw); Assert.NotNull(episode); Assert.Equal((uint)306213, episode.Id); Assert.Equal(5, episode.GuestStars.Count); Assert.Equal(1, episode.Writers.Count); Assert.Equal(1, episode.Directors.Count); }
/// <summary> /// Parse series xml document and returns null if xml is not valid /// </summary> /// <param name="seriesRaw">Series xml document</param> /// <returns>Returns the parsed series or null if xml is not valid</returns> public Series Parse(string seriesRaw) { if (seriesRaw == null) { throw new ArgumentNullException(nameof(seriesRaw)); } // If xml cannot be created return null XDocument doc; try { doc = XDocument.Parse(seriesRaw); } catch (XmlException e) { throw new ParseException("Series string cannot be parsed into a xml document.", e); } // If Data element is missing return null var seriesXml = doc.Element("Data"); if (seriesXml == null) { throw new ParseException("Error while parsing series xml document. Xml element 'Data' is missing."); } // If Series element is missing return null var seriesMetaXml = seriesXml.Element("Series"); if (seriesMetaXml == null) { throw new ParseException("Error while parsing series xml document. Xml Element 'Series' is missing."); } // Parsing series metadata... // If parsing failed a ParseException will be thrown in the Parse method. var series = Parse(seriesMetaXml); // Parsing episodes series.Episodes = seriesXml.Elements("Episode") .Select(episodeXml => _episodeParseService.Parse(episodeXml)) .Where(episode => episode != null) .ToList(); return(series); }
/// <summary> /// Get a specific episode based on its id and the given language and returns null if api response is not well formed /// </summary> /// <param name="episodeId">Id of the episode</param> /// <param name="language">Episode language</param> /// <returns>The corresponding episode or null if api response is not well formed</returns> public async Task <Episode> GetEpisode(uint episodeId, Language language) { var episodeRaw = await _episodeService.Retrieve(episodeId, language); return(_episodeParseService.Parse(episodeRaw)); }