예제 #1
0
        public static List <TwitterItem> getListItems(
            TwitterService service,
            AccountTwitter account,
            string username,
            string listNameOrId,
            decimal listId,
            string slug,
            decimal sinceId,
            DoWorkEventArgs e)
        {
            IEnumerable <TwitterStatus> tweets;
            List <TwitterItem>          allTweets = new List <TwitterItem>();

            try
            {
                if (service == null)
                {
                    return(new List <TwitterItem>());
                }
                ListTweetsOnListOptions options = new TweetSharp.ListTweetsOnListOptions();
                options.Slug            = slug;
                options.ListId          = Convert.ToInt64(listId);
                options.OwnerScreenName = username;
                service.TraceEnabled    = true;
                options.Count           = Properties.Settings.Default.TwitterItemsFetchInPast;
                if (sinceId > 0)
                {
                    options.SinceId = Convert.ToInt64(sinceId);
                }

                IAsyncResult result = service.BeginListTweetsOnList(options);
                tweets = service.EndListTweetsOnList(result);

                if (tweets != null)
                {
                    foreach (TwitterStatus status in tweets)
                    {
                        if (e != null)
                        {
                            if (e.Cancel)
                            {
                                AppController.Current.Logger.writeToLogfile("Cancel received for timeline");
                                break;
                            }
                        }
                        if (status.Id < Convert.ToInt64(sinceId))
                        {
                            continue;
                        }
                        else
                        {
                            TwitterItem item = API.TweetSharpConverter.getItemFromStatus(status, account);
                            if (item != null)
                            {
                                item.SourceListId = listId;
                                allTweets.Add(item);
                            }
                        }
                    }
                }
                else
                {
                    TwitterError error = service.Response.Error;
                    Console.WriteLine();
                }
            }
            catch (Exception exp)
            {
                TwitterError error = service.Response.Error;
                AppController.Current.sendNotification("ERROR", exp.Message, exp.StackTrace, "", null);
            }
            return(allTweets);
        }