コード例 #1
0
        public async void InitiateGenreRetrieval(Action <Genre> genreAvailableCallback)
        {
            var genreDoc = await NetflixXmlParser.GetGenresXml();

            foreach (var entryNode in genreDoc.Descendants(NetflixXmlParser.AtomNodeNames.Entry))
            {
                await ProcessGenre(entryNode, genreAvailableCallback);
            }
        }
コード例 #2
0
        private async Task ProcessGenre(XElement genreElement,
                                        Action <Genre> genreAvailableCallback)
        {
            string titleResponse;
            string titleListingUrl = string.Format(
                TITLE_URL_FORMAT,
                genreElement.Element(NetflixXmlParser.AtomNodeNames.Id).Value);

            using (var titleClient = new HttpClient())
            {
                titleClient.MaxResponseContentBufferSize = int.MaxValue;
                titleResponse = await titleClient.GetStringAsync(titleListingUrl);
            }
            var titleDoc     = XDocument.Parse(titleResponse);
            var titleObjects =
                titleDoc.Descendants(NetflixXmlParser.AtomNodeNames.Entry).Select(e => NetflixXmlParser.ParseTitle(e));
            var genre = new Genre
            {
                Name   = genreElement.Element(NetflixXmlParser.AtomNodeNames.Title).Value,
                Titles = new ObservableCollection <Title>()
            };

            foreach (var title in titleObjects)
            {
                genre.Titles.Add(title);
            }

            CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(
                CoreDispatcherPriority.Normal,
                (() => genreAvailableCallback(genre)));
        }