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); }
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; }