Esempio n. 1
0
        /// <summary>
        /// transforms XML into IList of List
        /// </summary>
        /// <param name="responseXml">xml with Twitter response</param>
        /// <returns>IList of List</returns>
        public virtual List <T> ProcessResults(string responseXml)
        {
            XElement    twitterResponse = XElement.Parse(responseXml);
            List <List> lists           = new List <List>();

            if (twitterResponse.Name == "lists_list" || twitterResponse.Name == "lists")
            {
                IEnumerable <XElement> listElements =
                    twitterResponse.Name == "lists_list" ?
                    twitterResponse.Element("lists").Elements("list") :
                    twitterResponse.Elements("list");

                lists =
                    (from list in listElements
                     select List.CreateList(list, twitterResponse))
                    .ToList();
            }
            else if (twitterResponse.Name == "list")
            {
                lists.Add(
                    List.CreateList(twitterResponse, twitterResponse)
                    );
            }
            else if (twitterResponse.Name == "users_list")
            {
                lists.Add(
                    new List
                {
                    Users =
                        (from user in twitterResponse.Element("users").Elements("user")
                         select User.CreateUser(user))
                        .ToList(),
                    CursorMovement = Cursors.CreateCursors(twitterResponse)
                });
            }
            else if (twitterResponse.Name == "user")
            {
                lists.Add(
                    new List
                {
                    Users = new List <User>
                    {
                        User.CreateUser(twitterResponse)
                    }
                });
            }
            else if (twitterResponse.Name == "statuses")
            {
                lists.Add(
                    new List
                {
                    Statuses =
                        (from status in twitterResponse.Elements("status")
                         select Status.CreateStatus(status))
                        .ToList(),
                    CursorMovement = Cursors.CreateCursors(twitterResponse)
                });
            }

            lists.ForEach(list =>
            {
                list.Type   = Type;
                list.Cursor = Cursor;
                list.ID     = ID;

                if (String.IsNullOrEmpty(list.ListID) && !String.IsNullOrEmpty(ListID))
                {
                    list.ListID = ListID;
                }

                list.PerPage    = PerPage;
                list.Page       = Page;
                list.ScreenName = ScreenName;
                list.SinceID    = SinceID;
            });

            return(lists.AsEnumerable().OfType <T>().ToList());
        }