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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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));
        }