public void Test_Method_GetRaitingListAnimeXML()
        {
            AnimeNNEncyclopediaConnector con = new AnimeNNEncyclopediaConnector();
            XElement result = con.GetRatingListAnimeXML(0, 1000);
            int actual =
                (from r in result.Elements("item")
                 select r).Count();


            Assert.AreEqual<int>(1000, actual);
        }
Пример #2
0
        public static List<Anime>  Transform(int elements, int skip)
        {
            //Build Connector
            AnimeNNEncyclopediaConnector conn = new AnimeNNEncyclopediaConnector();

            //Gather Raw API Data
            XElement result = conn.GetRatingListAnimeXML(skip, elements);
            List<APIRequestDesc> descList =
                (from r in result.Elements("item")
                 select new APIRequestDesc() { RequestType = APIRequestType.ANIME, RequestValue = r.Attribute("id").Value }).ToList();

            //Map Data
            List<Anime> mappedData = new List<Anime>(elements);
            int totalAmout = descList.Count;
            while (descList.Count > 0)
            {
                Console.WriteLine((totalAmout-descList.Count)+ "/"+totalAmout);
                //Get API Request Descriptors
                int end = descList.Count >= 50 ? 50 : descList.Count;
                List<APIRequestDesc> temp = descList.GetRange(0, end);
                descList.RemoveRange(0, end);

                XElement temp_result = null;
                APIRequestDesc current = null;
                List<Anime> temporaryMapping = null;
                //Download API Raw Data
                try
                {
                    temp_result = conn.GetItemDetailsXML(temp);
                    temporaryMapping = API2ModelTransformer.TransformXML2Model(temp_result);
                    mappedData.AddRange(temporaryMapping);

                } catch (XmlException x)
                {

                    foreach (APIRequestDesc t in temp)
                    {
                        try
                        {
                            current = t;
                            temp_result = conn.GetItemDetailsXML(temp);
                            temporaryMapping = API2ModelTransformer.TransformXML2Model(temp_result);
                            mappedData.AddRange(temporaryMapping);
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(current.RequestValue + ": Failed");
                        }
                    }


                }   
               

            }

            BuildRelations(mappedData);

            return mappedData;

        }