Exemplo n.º 1
0
 public static TweetCollection GetTimeline(string userName, int num, Hashtable properties)
 {
     //recommended properties: include_rts=true
     string rUrl = "https://api.twitter.com/1/statuses/user_timeline.xml?screen_name=" + userName + "&count=" + num;
     foreach (DictionaryEntry property in properties)
     {
         rUrl += "&" + property.Key + "=" + property.Value;
     }
     XmlDocument rDoc = new XmlDocument();
     rDoc.LoadXml(Twitter.ExecuteRequest(rUrl));
     XmlNode root = rDoc.DocumentElement;
     XmlNodeList nodeList = root.SelectNodes("status");
     TweetCollection twColl = new TweetCollection();
     foreach (XmlNode node in nodeList)
     {
         try
         {
             if (node.SelectSingleNode("retweeted_status") == null)
             {
                 twColl.Add(new Tweet(node.SelectSingleNode("user/screen_name").InnerText, node.SelectSingleNode("user/id").InnerText, node.SelectSingleNode("user/profile_image_url").InnerText, node.SelectSingleNode("text").InnerText));
             }
             else if (node.SelectSingleNode("retweeted_status") != null)
             {
                 twColl.Add(new Tweet(node.SelectSingleNode("retweeted_status/user/screen_name").InnerText, node.SelectSingleNode("retweeted_status/user/id").InnerText, node.SelectSingleNode("retweeted_status/user/profile_image_url").InnerText, node.SelectSingleNode("retweeted_status/text").InnerText));
             }
         }
         catch (Exception e)
         {
             throw new Exception("Failed to retrieve timeline.", e);
         }
     }
     return twColl;
 }
 private void ProcessTweetMessages(object obj, DownloadStringCompletedEventArgs args)
 {
     try
     {
         System.Diagnostics.Debug.WriteLine(args.Result);
         StockTwits_Stream_Symbol s = JsonConvert.DeserializeObject <StockTwits_Stream_Symbol>(args.Result);
         Cursor = s.cursor;
         foreach (StockTwits_Message m in s.messages)
         {
             TweetCollection.Add(new TweetItemViewModel()
             {
                 Author = m.user.name + " (" + m.user.username + ")", Content = m.body, PubDate = m.created_at
             });
         }
     }
     catch (Exception ex)
     {
         System.Diagnostics.Debug.WriteLine(ex.Message);
         System.Diagnostics.Debug.WriteLine(ex.Source);
         System.Diagnostics.Debug.WriteLine(ex.StackTrace);
     }
     if (ProgressBar != null)
     {
         ProgressBar.IsVisible = false;
     }
     this.IsDataLoaded = true;
 }
Exemplo n.º 3
0
 public TweetsPanelViewModel(AppInfo appInfo, TwitterClient client, Func<string, UserViewModel> userViewModelFactory)
 {
     AppInfo = appInfo;
     Tweets = new TweetCollection();
     _client = client;
     _userViewModelFactory = userViewModelFactory;
 }
Exemplo n.º 4
0
 public TweetsPanelViewModel(AppInfo appInfo, TwitterClient client, Func <string, UserViewModel> userViewModelFactory)
 {
     AppInfo = appInfo;
     Tweets  = new TweetCollection();
     _client = client;
     _userViewModelFactory = userViewModelFactory;
 }
Exemplo n.º 5
0
        public TweetCollection GetSearchResults(string searchText, IWebProxy webProxy)
        {
            TweetCollection tweets = new TweetCollection();

            string tweetscanUrl = "http://tweetscan.com/trss.php?s=" + searchText;

            HttpWebRequest request = WebRequest.Create(tweetscanUrl) as HttpWebRequest;

            // Add configured web proxy
            request.Proxy = webProxy;

            //try
            //{
                // Get the Web Response
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    // Get the response stream
                    StreamReader reader = new StreamReader(response.GetResponseStream());

                    // Load the response data into a XmlDocument
                    XmlDocument doc = new XmlDocument();
                    doc.Load(reader);

                    // Get statuses with XPath
                    XmlNodeList nodes = doc.SelectNodes("/rss/channel/item");

                    foreach (XmlNode node in nodes)
                    {
                        Tweet tweet = new Tweet();
                        tweet.Id = double.Parse(node.SelectSingleNode("tweetid").InnerText);
                        tweet.Text = HttpUtility.HtmlDecode(node.SelectSingleNode("text").InnerText);

                        string dateString = node.SelectSingleNode("pubdate").InnerText;
                        if (!string.IsNullOrEmpty(dateString))
                        {
                            tweet.DateCreated = DateTime.Parse(dateString);
                        }

                        User user = new User();

                        user.Name = node.SelectSingleNode("username").InnerText;
                        user.ScreenName = node.SelectSingleNode("screenname").InnerText;
                        user.ImageUrl = node.SelectSingleNode("image").InnerText;

                        tweet.User = user;

                        tweets.Add(tweet);
                    }

                    tweets.SaveToDisk();
                }
            //}
            //catch {
            ////TODO: not sure what kind of errors are thrown by tweetcan
            //    // eat it.
            //}

            return tweets;
        }
Exemplo n.º 6
0
        public TweetCollection GetSearchResults(string searchText, IWebProxy webProxy)
        {
            TweetCollection tweets = new TweetCollection();

            string tweetscanUrl = "http://tweetscan.com/trss.php?s=" + searchText;

            HttpWebRequest request = WebRequest.Create(tweetscanUrl) as HttpWebRequest;

            // Add configured web proxy
            request.Proxy = webProxy;

            //try
            //{
            // Get the Web Response
            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                // Get the response stream
                StreamReader reader = new StreamReader(response.GetResponseStream());

                // Load the response data into a XmlDocument
                XmlDocument doc = new XmlDocument();
                doc.Load(reader);

                // Get statuses with XPath
                XmlNodeList nodes = doc.SelectNodes("/rss/channel/item");

                foreach (XmlNode node in nodes)
                {
                    Tweet tweet = new Tweet();
                    tweet.Id   = double.Parse(node.SelectSingleNode("tweetid").InnerText);
                    tweet.Text = HttpUtility.HtmlDecode(node.SelectSingleNode("text").InnerText);

                    string dateString = node.SelectSingleNode("pubdate").InnerText;
                    if (!string.IsNullOrEmpty(dateString))
                    {
                        tweet.DateCreated = DateTime.Parse(dateString);
                    }

                    User user = new User();

                    user.Name       = node.SelectSingleNode("username").InnerText;
                    user.ScreenName = node.SelectSingleNode("screenname").InnerText;
                    user.ImageUrl   = node.SelectSingleNode("image").InnerText;

                    tweet.User = user;

                    tweets.Add(tweet);
                }

                tweets.SaveToDisk();
            }
            //}
            //catch {
            ////TODO: not sure what kind of errors are thrown by tweetcan
            //    // eat it.
            //}

            return(tweets);
        }
Exemplo n.º 7
0
 public void Tweet_added_to_empty_collection_succeeds()
 {
     TweetCollection tweets = new TweetCollection();
     Tweet tweet = new Tweet() { DateCreated = DateTime.Now, Id = 1 };
     tweets.Add(tweet);
     Assert.That(tweets.Contains(tweet));
     Assert.That(tweets.Count == 1);
 }
Exemplo n.º 8
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            TweetScanHelper ts            = new TweetScanHelper();
            TweetCollection searchREsults = ts.GetSearchResults(SearchTextBox.Text);

            foreach (Tweet t in searchREsults)
            {
                tweets.Add(t);
            }
        }
        public SingleOneAllTweets(IServiceApi net, User relatedUser)
        {
            InitializeComponent();
            this.saNet = net;
            this.saUser = relatedUser;
            this.Title = saUser.ScreenName + "的微博";
            UserTitleBar.DataContext = saUser;
            singleAllTweets = new TweetCollection();
            AllTweetsListBox.DataContext = singleAllTweets;

            DispatchAllTweetsList();
        }
Exemplo n.º 10
0
        public void Tweet_added_to_empty_collection_succeeds()
        {
            TweetCollection tweets = new TweetCollection();
            Tweet           tweet  = new Tweet()
            {
                DateCreated = DateTime.Now, Id = 1
            };

            tweets.Add(tweet);
            Assert.That(tweets.Contains(tweet));
            Assert.That(tweets.Count == 1);
        }
Exemplo n.º 11
0
 protected override void Context()
 {
     _tweets      = new TweetCollection();
     _totalTweets = 20;
     _keepCount   = 5;
     for (int i = 1; i <= _totalTweets; i++)
     {
         var tweet = new Tweet {
             Id = i
         };
         _tweets.Insert(0, tweet);
         _tweets.Insert(0, tweet);
     }
 }
        public TweetCollection GetTweets()
        {
            TweetCollection tweets = new TweetCollection();
            Tweet           tweet  = new Tweet();

            if (twitter == null)
            {
                tweet.Text = "Please setup your user/password and url in the connection settings.";
                tweets.Add(tweet);
                return(tweets);
            }
            try
            {
                //if (_lastId == null)
                tweets = twitter.GetFriendsTimeline();

                /*else
                 *  tweets = twitter.GetFriendsTimeline(_lastId.ToString());
                 * if (tweets != null && tweets.Count > 0)
                 * {
                 *  _lastId = String.Format("{0:0}", tweets[0].Id);
                 * }
                 * else
                 * {
                 *  tweet.Text = "sent " + _lastId;
                 *  tweets.Add(tweet);
                 * }*/
                return(tweets);
            }
            catch (System.Net.WebException we)
            {
                twitter.TwitterServerUrl = twitter.TwitterServerUrl.Replace("https://", "http://");
                try
                {
                    return(twitter.GetFriendsTimeline());
                }
                catch (Exception err)
                {
                    tweet.Text = err.Message;
                    tweets.Add(tweet);
                    return(tweets);
                }
            }
            catch (Exception err)
            {
                tweet.Text = err.Message;
                tweets.Add(tweet);
                return(tweets);
            }
        }
Exemplo n.º 13
0
        public void Tweet_added_to_collection_unsorted()
        {
            TweetCollection tweets = new TweetCollection(SortOrder.None);
            Tweet tweet1 = new Tweet() { DateCreated = DateTime.Now, Id = 1 };
            Tweet tweet2 = new Tweet() { DateCreated = tweet1.DateCreated.Value.Subtract(TimeSpan.FromMinutes(5)), Id = 2 };
            Tweet tweet3 = new Tweet() { DateCreated = tweet1.DateCreated.Value.Subtract(TimeSpan.FromMinutes(2)), Id = 2 };

            tweets.Add(tweet1);
            tweets.Add(tweet2);
            tweets.Add(tweet3);
            Assert.That(tweets[0], Is.EqualTo(tweet1));
            Assert.That(tweets[1], Is.EqualTo(tweet2));
            Assert.That(tweets[2], Is.EqualTo(tweet3));
        }
Exemplo n.º 14
0
        public TweetCollection GetTweets()
        {
            TweetCollection tweets = new TweetCollection();
            Tweet tweet = new Tweet();
            if (twitter == null)
            {
                tweet.Text = "Please setup your user/password and url in the connection settings.";
                tweets.Add(tweet);
                return tweets;
            }
            try
            {
                //if (_lastId == null)
                tweets = twitter.GetFriendsTimeline();
                /*else
                    tweets = twitter.GetFriendsTimeline(_lastId.ToString());
                if (tweets != null && tweets.Count > 0)
                {
                    _lastId = String.Format("{0:0}", tweets[0].Id);
                }
                else
                {
                    tweet.Text = "sent " + _lastId;
                    tweets.Add(tweet);
                }*/
                return tweets;
            }
            catch (System.Net.WebException we)
            {
                twitter.TwitterServerUrl = twitter.TwitterServerUrl.Replace("https://","http://");
                try
                {
                    return twitter.GetFriendsTimeline();
                }
                catch (Exception err)
                {
                    tweet.Text = err.Message;
                    tweets.Add(tweet);
                    return tweets;
                }

            }
            catch (Exception err)
            {
                tweet.Text = err.Message;
                tweets.Add(tweet);
                return tweets;
            }
        }
Exemplo n.º 15
0
        public MainWindow()
        {
            InitializeComponent();
            DateFormat
                = "ddd MMM dd HH:mm:ss zzzz yyyy";


            twitterAuth = Resources["TwitterAuthKey"] as TwitterAuth;
            collection = Resources["TweetCollectionKey"] as TweetCollection;
            retweetCollection = Resources["RetweetStatusCollectionKey"] as RetweetStatusCollection;

            this.Loaded += async (sender, e) => await twitterAuth.Init(this);
            TweetListView.SelectionChanged +=
                (s, e) => RetweetCountBlock.Text = SelectedItemRetweetCountString;
        }
Exemplo n.º 16
0
        public MainWindow()
        {
            InitializeComponent();
            DateFormat
                = "ddd MMM dd HH:mm:ss zzzz yyyy";


            twitterAuth       = Resources["TwitterAuthKey"] as TwitterAuth;
            collection        = Resources["TweetCollectionKey"] as TweetCollection;
            retweetCollection = Resources["RetweetStatusCollectionKey"] as RetweetStatusCollection;

            this.Loaded += async(sender, e) => await twitterAuth.Init(this);

            TweetListView.SelectionChanged      +=
                (s, e) => RetweetCountBlock.Text = SelectedItemRetweetCountString;
        }
Exemplo n.º 17
0
        public void Setup()
        {
            Initialise();
            _query = "some text";

            _twitterAuthorisation = TwitterAuthenticationBuilder.Build.AnInstance();
            TwitterApiAdapter
            .Setup(x => x.Login())
            .Returns(Task.FromResult(_twitterAuthorisation));

            _tweetCollection = TweetCollectionBuilder.Build.AnInstance();
            TwitterApiAdapter
            .Setup(x => x.Search(_query, _twitterAuthorisation))
            .Returns(Task.FromResult(_tweetCollection));

            _result = Controller.SearchTweets(_query).Result;
        }
        private void StoreAttachments(TweetCollection tc)
        {
            SPSite mySite  = SPContext.Current.Site;
            SPWeb  myWeb   = SPContext.Current.Web;
            SPList _myList = CreateList(mySite, myWeb);

            foreach (Tweet tweet in tc)
            {
                if (tweet.Assets != null)
                {
                    foreach (Attachment att in tweet.Assets)
                    {
                        SPQuery oQuery = new SPQuery();
                        oQuery.Query =
                            "<Where>" +
                            "<And>" +
                            "<Eq><FieldRef Name='DocumentId'/>" +
                            "<Value Type='Number'>" + att.Id + "</Value></Eq>" +
                            "<Eq><FieldRef Name='PresentlyUrl'/>" +
                            "<Value Type='Text'>" + this.Url + "</Value></Eq>" +
                            "</And>" +
                            "</Where>";
                        SPListItemCollection collListItems = _myList.GetItems(oQuery);
                        if (collListItems.Count == 0)
                        {
                            SPListItem myListItem = _myList.Items.Add();
                            myListItem["DocumentId"]   = att.Id;
                            myListItem["Title"]        = att.FileName;
                            myListItem["URL"]          = att.Url;
                            myListItem["Size"]         = att.Size;
                            myListItem["MediaType"]    = att.ContentType;
                            myListItem["PresentlyUrl"] = this.Url;
                            if (att.ContentType.StartsWith("image"))
                            {
                                myListItem["Preview"] = att.Url.Replace("/original/", "/stream_multi_thumb/");
                            }
                            myListItem["DateCreated"] = att.DateCreated;
                            myWeb.AllowUnsafeUpdates  = true;
                            myListItem.Update();
                            myWeb.AllowUnsafeUpdates = false;
                        }
                    }
                }
            }
        }
Exemplo n.º 19
0
        public void Truncate()
        {
            int count = 10;

            TweetCollection tweets = new TweetCollection();

            for (int i = 0; i < 20; i++)
            {
                Tweet tweet = new Tweet();
                tweet.Id = i;
                tweets.Insert(0, tweet);
            }

            tweets.TruncateAfter(count);

            Assert.AreEqual(count, tweets.Count);
            Assert.AreEqual(tweets[0].Id, 19);
        }
 public String GetTweets()
 {
     lock (typeof(PresentlyWebPart))
     {
         try
         {
             TweetCollection tweets = _twitterService.GetTweets();
             StoreAttachments(tweets);
             return(TweetBuilder.buildTweets(tweets));
         }
         catch (Exception err)
         {
             StringBuilder sb = new StringBuilder();
             sb.Append("<div>" + err.Message + "</div>" + "<div>" + err.StackTrace + "</div>");
             return(sb.ToString());
         }
     }
 }
Exemplo n.º 21
0
        public void Truncate()
        {
            int count = 10;

            TweetCollection tweets = new TweetCollection();

            for (int i = 0; i < 20; i++)
            {
                Tweet tweet = new Tweet();
                tweet.Id = i;
                tweets.Insert(0, tweet);
            }

            tweets.TruncateAfter(count);

            Assert.AreEqual(count, tweets.Count);
            Assert.AreEqual(tweets[0].Id, 19);
        }
Exemplo n.º 22
0
        /// <summary>
        ///     A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="context">Lambda context.</param>
        /// <returns></returns>
        public async void FunctionHandler(ILambdaContext context)
        {
            var consumerKey       = Environment.GetEnvironmentVariable("ConsumerKey");
            var consumerSecret    = Environment.GetEnvironmentVariable("ConsumerSecret");
            var accessToken       = Environment.GetEnvironmentVariable("AccessToken");
            var accessTokenSecret = Environment.GetEnvironmentVariable("AccessTokenSecret");

            Auth.SetUserCredentials(consumerKey, consumerSecret, accessToken, accessTokenSecret);

            var timelines = new TweetCollection();
            var followed  = new List <string> {
                "FoxNews", "CNN", "MSNBC"
            };

            foreach (var screename in followed)
            {
                var recentTweets = Timeline.GetUserTimeline(screename, 15);

                var slimTweets = recentTweets.Select(
                    tweet => new SlimTweets
                {
                    Id                  = tweet.Id,
                    Text                = tweet.Text,
                    CreatedDate         = tweet.CreatedAt,
                    CreatedByScreenName = tweet.CreatedBy.ScreenName
                }).ToList();

                timelines.LatestTweets.Add(
                    new TweetCollection.TweetsByScreenName {
                    ScreenName = screename, Tweets = slimTweets
                });
            }

            var client   = new AmazonDynamoDBClient();
            var dynamoDb = new DynamoDBContext(client);

            await dynamoDb.SaveAsync(timelines);
        }
Exemplo n.º 23
0
        public void Tweet_added_to_collection_in_sorted_order_with_ascending_sort()
        {
            TweetCollection tweets = new TweetCollection(SortOrder.Ascending);
            Tweet           tweet1 = new Tweet()
            {
                DateCreated = DateTime.Now, Id = 1
            };
            Tweet tweet2 = new Tweet()
            {
                DateCreated = tweet1.DateCreated.Value.Subtract(TimeSpan.FromMinutes(5)), Id = 2
            };
            Tweet tweet3 = new Tweet()
            {
                DateCreated = tweet1.DateCreated.Value.Subtract(TimeSpan.FromMinutes(2)), Id = 2
            };

            tweets.Add(tweet1);
            tweets.Add(tweet2);
            tweets.Add(tweet3);
            Assert.That(tweets[0], Is.EqualTo(tweet2));
            Assert.That(tweets[1], Is.EqualTo(tweet3));
            Assert.That(tweets[2], Is.EqualTo(tweet1));
        }
Exemplo n.º 24
0
        public void Setup()
        {
            Initialise();

            _query     = "Search criteria";
            _authToken = TwitterAuthenticationBuilder.Build.AnInstance();

            _webRequest = new Mock <HttpWebRequest>();
            TwitterApiRequestFactory
            .Setup(x => x.CreateSearchTweetRequest(_query, _authToken))
            .Returns(_webRequest.Object);

            _webResponse = new Mock <HttpWebResponse>();
            HttpWebRequestHelper
            .Setup(x => x.GetResponse(_webRequest.Object))
            .Returns(Task.FromResult(_webResponse.Object));

            _tweetCollection = TweetCollectionBuilder.Build.AnInstance();
            ObjectSerializer
            .Setup(x => x.DeserializeJson <TweetCollection>(_webResponse.Object))
            .Returns(_tweetCollection);

            _result = TwitterApiAdapter.Search(_query, _authToken).Result;
        }
 public TweetCollection FetchByScreenName(string screenName, int max)
 {
     Logger.Log("FetchByScreenName: " + screenName, System.Diagnostics.TraceEventType.Information);
     var collection = new TweetCollection();
     collection.Add(new Tweet()
     {
         TweetID = 1,
         LocationText = "Milwaukee, WI",
         ProfileImageUrl = String.Empty,
         ScreenName = screenName,
         TweetText = "First tweet!",
         TweetCreated = DateTime.Now.AddMinutes(-10)
     });
     collection.Add(new Tweet()
     {
         TweetID = 1,
         LocationText = "Milwaukee, WI",
         ProfileImageUrl = String.Empty,
         ScreenName = screenName,
         TweetText = "Second tweet!",
         TweetCreated = DateTime.Now.AddMinutes(-5)
     });
     return collection;
 }
 public void EmptyData()
 {
     Cursor = null;
     TweetCollection.Clear();
 }
 public TweetCollection SearchByLocation(string keyword, int max, int kilometers, double latitude, double longitude)
 {
     var collection = new TweetCollection();
     return collection;
 }
Exemplo n.º 28
0
        private void UpdateUsersTimelineInterface(TweetCollection newTweets)
        {
            StatusTextBlock.Text = displayUser + "'s Timeline Updated: " + repliesLastUpdated.ToLongTimeString();
            User u = null;

            for (int i = newTweets.Count - 1; i >= 0; i--)
            {
                Tweet tweet = newTweets[i];
                u = tweet.User;

                if (!userTweets.Contains(tweet))
                {
                    userTweets.Insert(0, tweet);
                    tweet.IsNew = true;
                }
                else
                {
                    // update the relativetime for existing tweets
                    userTweets[i].UpdateRelativeTime();
                }
            }

            if (userTweets.Count > 0)
                UserTimelineListBox.SelectedIndex = 0;



            // JMF: There's an issue with binding where the wrong user's header is sometimes 
            // being displayed.  I think it is related to the fact that these header elements
            // are bound to a property found in each list item, and are probably picking up
            // the object from a previous list before the current list is updated (i.e., a
            // binding race condition?).

            // Manually setting header here as a workaround....
            if (u != null)
            {
                UserImage.Source = new ImageSourceConverter().ConvertFromString(u.ImageUrl) as ImageSource;
                FullName.Text = u.FullName;
                Description.Text = u.Description;
                SiteUrl.Text = u.SiteUrl;
                Location.Text = u.Location;
            }

            StopStoryboard("Fetching");
        }
Exemplo n.º 29
0
 protected override void Because()
 {
     _tweets = _directMessages.ToTweetCollection();
 }
Exemplo n.º 30
0
 private void ScheduleUpdateFunctionInUIThread(TweetCollection addedTweets)
 {
     LayoutRoot.Dispatcher.BeginInvoke(
                     DispatcherPriority.Background,
                     new AddTweetsUpdateDelegate(UpdatePostUserInterface), addedTweets);
 }
Exemplo n.º 31
0
 protected override void Because()
 {
     _tweets = _directMessages.ToTweetCollection();
 }
Exemplo n.º 32
0
        private void PopUpNotify(TweetCollection newTweets)
        {
            TweetCollection popUpTweets = new TweetCollection();
            
            foreach (var tweet in newTweets)
            {
                if (ShouldPopUp(tweet))
                    popUpTweets.Add(tweet);
            }

            if (popUpTweets.Count > Double.Parse(AppSettings.MaximumIndividualAlerts))
            {
                Popup p = new Popup("New Tweets", BuiltNewTweetMessage(popUpTweets), twitter.CurrentlyLoggedInUser.ImageUrl, 0);
                SetupPopupProps(p);
                p.Show();
            }
            else
            {
                int index = 0;
                foreach (Tweet tweet in popUpTweets)
                {
                    Popup p = new Popup(tweet, index++);
                    SetupPopupProps(p);
                    p.Show();
                }
            }
        }
Exemplo n.º 33
0
 private static void UpdateExistingTweets(TweetCollection oldTweets)
 {
     // Update existing tweets
     foreach (Tweet tweet in oldTweets)
     {
         tweet.IsNew = false;
         tweet.UpdateRelativeTime();
     }
 }
Exemplo n.º 34
0
        public static String buildTweets(TweetCollection tc)
        {
            try {
            if (tc.Count == 0) return "no tweets";
            StringBuilder allSb = new StringBuilder();
            int i = 0;
            foreach (Tweet tweet in tc)
            {
                StringBuilder sb = new StringBuilder();
                int insertion_index = 0;
                String style = (i % 2 == 0) ? "even_color" : "odd_color";
                if (tweet.User != null)
                {
                    sb.Append("<div class='tweet " + style + "'>");
                    insertion_index = sb.Length;
                    sb.Append("<div class='tweetUserName'><a class='user_link' rel='@" + tweet.User.ScreenName + "'>" + "<img src='" + tweet.User.ImageUrl + "'/>" + "</a></div>");
                }
                String replyTo = "";
                string strTweet = parseTweet(tweet.Text, out replyTo);
                sb.Append("<div id='"+tweet.Id+"' class='tweetText'>" + strTweet);
                if (tweet.Paste != null )
                {
                    sb.Append("<a class='more_text_link'>  More..</a>");
                    sb.Append("<div class='more_text'>");
                    sb.Append(parseTweet(tweet.Paste.Text, out replyTo));
                    sb.Append("</div>");
                }
                if (tweet.Assets != null && tweet.Assets.Count > 0)
                {
                    sb.Append("<div class='tweetAttachment'><span>Attachments:</span>");
                    foreach (Attachment attachment in tweet.Assets)
                    {
                        String url = attachment.Url.Replace("/original/", "/stream_multi_thumb/");
                        if (attachment.ContentType.StartsWith("image"))
                            sb.Append("<a rel='lightbox' href='" + attachment.Url + "'><img src='" + url + "'/></a>");
                        else
                            sb.Append("<a href='" + attachment.Url + "'>" + attachment.FileName + "</a>");
                    }
                    sb.Append("</div>");
                }
                sb.Append("</div>");

                if (tweet.User != null)
                {
                    if (replyTo != null)
                        sb.Insert(insertion_index, "<div class=\"tweetNote\">" + tweet.User.FullName + " To " + replyTo + "</div>");
                    else if (tweet.User != null)
                        sb.Insert(insertion_index, "<div class=\"tweetNote\">" + tweet.User.FullName + "</div>");
                }
                if (tweet.RelativeTime != null)
                    sb.Append("<div class=\"tweetRelativeTime\">" + tweet.RelativeTime + " " + tweet.Source + "</div>");

                i++;
                sb.Append("<div style='clear:both'></div></div>");
                allSb.Append(sb.ToString());
            }
            return allSb.ToString();
            }
            catch (Exception err)
            {
            StringBuilder sb = new StringBuilder();
            sb.Append("<div>" + err.Message + "</div>" + "<div>" + err.StackTrace + "</div>");
            return sb.ToString();
            }
        }
Exemplo n.º 35
0
 private void HighlightTweets(TweetCollection tweets)
 {
     if (string.IsNullOrEmpty(AppSettings.HighlightRegex))
         return;
     
     foreach (Tweet tweet in tweets)
     {
         if (Regex.IsMatch(tweet.Text, AppSettings.HighlightRegex, RegexOptions.IgnoreCase) ||
             Regex.IsMatch(tweet.User.ScreenName, AppSettings.HighlightRegex, RegexOptions.IgnoreCase))
         {
             tweet.IsInteresting = true;
         }
     }
 }
Exemplo n.º 36
0
 private void NotifyOnNewTweets(TweetCollection newTweets, string type)
 {
     if (GrowlCommunicator.IsRunning())
     {
         GrowlNotify(newTweets, type);
     }
     else if (SnarlConnector.GetSnarlWindow().ToInt32() != 0)
     {
         SnarlNotify(newTweets, type);
     }
     else
     {
         PopUpNotify(newTweets);
     }
 }
Exemplo n.º 37
0
        /// <summary>
        /// The Main function for interfacing with the Twitter API
        /// </summary>
        /// <returns>Collection of Tweets. Twitter limits the max to 20.</returns>
        private TweetCollection RetrieveTimeline(Timeline timeline, string since, string userId)
        {
            if (!IsLoggedIn()) return null;

            var tweets = new TweetCollection();

            ITwitterLeafNode request;

            switch (timeline)
            {
                case Timeline.Public:
                    request = CreateRequest().Statuses().OnPublicTimeline();
                    break;
                case Timeline.Friends:
                    request = CreateRequest().Statuses().OnFriendsTimeline();
                    break;
                case Timeline.User:
                    request = CreateRequest().Statuses().OnUserTimeline().For(userId);
                    break;
                case Timeline.Replies:
                    request = CreateRequest().Statuses().Mentions();
                    break;
                default:
                    request = CreateRequest().Statuses().OnPublicTimeline();
                    break;
            }

            if (!string.IsNullOrEmpty(since))
            {
                DateTime sinceDate;
                DateTime.TryParse(since, out sinceDate);

                // Go back a minute to compensate for latency.
                sinceDate = sinceDate.AddMinutes(-1);

                //TODO: Need to make use of since information
            }

            foreach (TwitterStatus result in request.Request().AsStatuses())
            {
                tweets.Add(GetTweetFromTwitterStatus(result));
            }

            tweets.SaveToDisk();
            return tweets;
        }
Exemplo n.º 38
0
        private void SnarlNotify(TweetCollection newTweets, string type)
        {
            string alertClass = "";
            if (type == "reply")
            {
                alertClass = "New reply";
            }
            else if (type == "directMessage")
            {
                alertClass = "New direct message";
            }
            else
            {
                alertClass = "New tweet";
            }

            if (newTweets.Count > Double.Parse(AppSettings.MaximumIndividualAlerts))
            {
                string defaultImage = "";
                string tempFile = System.IO.Path.GetTempFileName();
                WebClient client = new WebClient();
                try
                {
                    client.DownloadFile(twitter.CurrentlyLoggedInUser.ImageUrl, tempFile);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    tempFile = defaultImage;
                }


                WindowsMessage replyMsg = new WindowsMessage();

                SnarlConnector.ShowMessageEx("New tweets summarized", "You have new tweets!", BuiltNewTweetMessage(newTweets), int.Parse(Properties.Settings.Default.NotificationDisplayTime), tempFile, this.SnarlConfighWnd, replyMsg, "");
                if (tempFile != defaultImage)
                {
                    System.IO.File.Delete(tempFile);
                }
            }
            else
            {
                foreach (Tweet tweet in newTweets)
                {
                    string defaultImage = "";

                    string tempFile = System.IO.Path.GetTempFileName();
                    WebClient client = new WebClient();
                    try
                    {
                        client.DownloadFile(tweet.User.ImageUrl, tempFile);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex);
                        tempFile = defaultImage;
                    }

                    WindowsMessage replyMsg = new WindowsMessage();
                    SnarlConnector.ShowMessageEx(alertClass, tweet.User.ScreenName, string.Format("{0}\n\n{1}", tweet.Text, tweet.RelativeTime), int.Parse(Properties.Settings.Default.NotificationDisplayTime), tempFile, this.SnarlConfighWnd, replyMsg, "");
                    if (tempFile != defaultImage)
                    {
                        System.IO.File.Delete(tempFile);
                    }
                }
            }
        }
Exemplo n.º 39
0
 protected override void Context()
 {
     _tweets = new TweetCollection();
     _totalTweets = 20;
     _keepCount = 5;
     for (int i = 1; i <= _totalTweets; i++)
     {
         var tweet = new Tweet { Id = i };
         _tweets.Insert(0, tweet);
         _tweets.Insert(0, tweet);
     }
 }
Exemplo n.º 40
0
 protected override void Context()
 {
     _tweets = new TweetCollection();
 }
Exemplo n.º 41
0
 private static string BuiltNewTweetMessage(TweetCollection newTweets)
 {
     string message = string.Format("You have {0} new tweets!\n", newTweets.Count);
     foreach (Tweet tweet in newTweets)
     {
         message += " " + tweet.User.ScreenName;
     }
     if (message.Length > TwitterNet.CharacterLimit)
     {
         message = message.Substring(0, (TwitterNet.CharacterLimit - 5));
         int lastSpace = message.LastIndexOf(' ');
         message = message.Substring(0, lastSpace) + "...";
     }
     return TruncateMessage(message);
 }
        private void StoreAttachments(TweetCollection tc)
        {
            SPSite mySite = SPContext.Current.Site;
            SPWeb myWeb = SPContext.Current.Web;
            SPList _myList = CreateList(mySite, myWeb);

            foreach (Tweet tweet in tc)
            if (tweet.Assets != null) {
                foreach (Attachment att in tweet.Assets)
                {
                    SPQuery oQuery = new SPQuery();
                    oQuery.Query =
                        "<Where>"+
                            "<And>"+
                                "<Eq><FieldRef Name='DocumentId'/>" +
                                   "<Value Type='Number'>"+att.Id+"</Value></Eq>" +
                                "<Eq><FieldRef Name='PresentlyUrl'/>" +
                                    "<Value Type='Text'>" + this.Url + "</Value></Eq>"+
                            "</And>"+
                        "</Where>";
                    SPListItemCollection collListItems = _myList.GetItems(oQuery);
                    if (collListItems.Count == 0)
                    {
                        SPListItem myListItem = _myList.Items.Add();
                        myListItem["DocumentId"] = att.Id;
                        myListItem["Title"] = att.FileName;
                        myListItem["URL"] = att.Url;
                        myListItem["Size"] = att.Size;
                        myListItem["MediaType"] = att.ContentType;
                        myListItem["PresentlyUrl"] = this.Url;
                        if (att.ContentType.StartsWith("image"))
                        {
                            myListItem["Preview"] = att.Url.Replace("/original/", "/stream_multi_thumb/");
                        }
                        myListItem["DateCreated"] = att.DateCreated;
                        myWeb.AllowUnsafeUpdates = true;
                        myListItem.Update();
                        myWeb.AllowUnsafeUpdates = false;
                    }
                }
            }
        }
Exemplo n.º 43
0
        private void FilterTweets(TweetCollection tweets, bool filterUsers)
        {
            bool usersToFilter = filterUsers && (ignoredUsers.Count > 0);
            if (string.IsNullOrEmpty(AppSettings.FilterRegex) && !usersToFilter)
                return;

            for (int i = tweets.Count - 1; i >= 0; i--)
            {
                Tweet tweet = tweets[i];
                if (!string.IsNullOrEmpty(AppSettings.FilterRegex) && Regex.IsMatch(tweet.Text, AppSettings.FilterRegex, RegexOptions.IgnoreCase))
                    tweets.Remove(tweet);
                else if (ignoredUsers.ContainsKey(tweet.User.ScreenName) && ignoredUsers[tweet.User.ScreenName] > DateTime.Now)
                    tweets.Remove(tweet);
            }
        }
Exemplo n.º 44
0
 protected override void Context()
 {
     _tweets = new TweetCollection();
 }
Exemplo n.º 45
0
        private void UpdateUserInterface(TweetCollection newTweets)
        {
            DateTime lastUpdated = DateTime.Now;
            StatusTextBlock.Text = "Last Updated: " + lastUpdated.ToLongTimeString();

            AppSettings.LastUpdated = lastUpdated.ToString();
            AppSettings.Save();

            FilterTweets(newTweets, true);
            HighlightTweets(newTweets);
            UpdateExistingTweets();

            TweetCollection addedTweets = new TweetCollection();

            //prevents huge number of notifications appearing on startup
            bool displayPopups = !(tweets.Count == 0);

            // Add the new tweets
            for (int i = newTweets.Count - 1; i >= 0; i--)
            {
                Tweet tweet = newTweets[i];

                if (tweets.Contains(tweet) || HasBehavior(tweet, UserBehavior.Ignore) || IsTruncatedTweet(tweet))
                    continue;

                tweets.Add(tweet);
                tweet.Index = tweets.Count;
                tweet.IsNew = true;
                addedTweets.Add(tweet);
            }

            // tweets listbox ScrollViewer.CanContentScroll is set to "False", which means it scrolls more smooth,
            // However it disables Virtualization
            // Remove tweets pass 100 should improve performance reasons.
            if (AppSettings.KeepLatest != 0)
            {
                if (tweets.Count > AppSettings.KeepLatest)
                    lastTruncatedTweetTime = tweets[AppSettings.KeepLatest - 1].DateCreated;

                tweets.TruncateAfter(AppSettings.KeepLatest);
            }

            if (addedTweets.Count > 0)
            {
                if (AppSettings.DisplayNotifications && !(bool)this.IsActive)
                    NotifyOnNewTweets(addedTweets, "tweet");

                if (AppSettings.PlaySounds)
                {
                    // Author: Keith Elder
                    // I wrapped a try catch around this and added logging.
                    // I found that the Popup screen and this were causing 
                    // a threading issue.  At least that is my theory.  When
                    // new items would come in, and play a sound as well as 
                    // pop a new message there was no need to recreate and load
                    // the wave file.  InitializeSoundPlayer() was added on load
                    // to do that just once.
                    try
                    {
                        // Play tweets found sound for new tweets
                        _player.Play();
                    }
                    catch (Exception ex)
                    {
                        App.Logger.Error("Error playing sound", ex);
                    }
                }
            }

            StopStoryboard("Fetching");
        }
Exemplo n.º 46
0
        private void AddTweet(string tweetText)
        {
            try
            {
                //bgriswold: Keeping check in place in case final character string is URL and it wasn't reformatted on the fly.
                if (tweetText.Length > TwitterNet.CharacterLimit) 
                {
                    ParseTextHereAndTinyUpAnyURLsFound(ref tweetText);
                }

                var addedTweets = new TweetCollection();

                string[] statuses = TweetSplitter.SplitTweet(tweetText);
                foreach (string status in statuses)
                {
                    if (isReplyMessage)
                    {
                        addedTweets.Add(twitter.AddTweet(status, SelectedTweet.Id));
                    }
                    else 
                    {
                        addedTweets.Add(twitter.AddTweet(status));
                    }
                }

                if (statuses.Length > 0)
                {
                    ScheduleUpdateFunctionInUIThread(addedTweets);
                }

            }
            catch (WebException ex)
            {
                UpdateTextBlock.Text = "Update failed.";
                App.Logger.Debug(String.Format("There was a problem fetching new tweets from Twitter.com: {0}", ex.ToString()));
            }
            catch (ProxyAuthenticationRequiredException ex)
            {
                App.Logger.Error("Incorrect proxy configuration.");
                MessageBox.Show("Proxy server is configured incorrectly.  Please correct the settings on the Options menu.");
            }
            catch (ProxyNotFoundException ex)
            {
                App.Logger.Error("Incorrect proxy configuration.");
                MessageBox.Show(ex.Message);
            }

        }
Exemplo n.º 47
0
        private void GrowlNotify(TweetCollection newTweets, string type)
        {
            Growl.Connector.NotificationType notificationType = null;
            if (type == "reply")
            {
                notificationType = GrowlCommunicator.NewReply;
            }
            else if (type == "directMessage")
            {
                notificationType = GrowlCommunicator.NewDirectMessage;
            }
            else if (newTweets.Count > Double.Parse(AppSettings.MaximumIndividualAlerts))
            {
                notificationType = GrowlCommunicator.NewTweetsSummary;
            }
            else
            {
                notificationType = GrowlCommunicator.NewTweet;
            }

            if (newTweets.Count > Double.Parse(AppSettings.MaximumIndividualAlerts))
            {
                GrowlCommunicator.Notify(notificationType, "You have new tweets!", BuiltNewTweetMessage(newTweets), twitter.CurrentlyLoggedInUser.ImageUrl);
            }
            else
            {
                foreach (Tweet tweet in newTweets)
                {
                    GrowlCommunicator.Notify(notificationType, tweet.User.ScreenName, String.Format("{0}\n\n{1}", tweet.Text, tweet.RelativeTime), tweet.User.ImageUrl);
                }
            }
        }
Exemplo n.º 48
0
        private void UpdatePostUserInterface(TweetCollection addedTweets)
        {
            if (addedTweets != null)
            {
                UpdateTextBlock.Text = "Update";
                StatusTextBlock.Text = "Status Updated!";
                PlayStoryboard("CollapseUpdate");
                isExpanded = false;
                isReplyMessage = false;
                TweetTextBox.Clear();

                foreach (Tweet tweet in addedTweets)
                {
                    if (tweet.IsDirectMessage)
                    {
                        string dmTarget = GetDMTarget(tweet);
                        StatusTextBlock.Text = string.Format("Direct message to {0} sent", dmTarget);
                    }
                    else
                    {
                    tweets.Insert(0, tweet);
                }
            }
            }
            else
            {
                App.Logger.Error("There was a problem posting your tweet to Twitter.com.");
                MessageBox.Show("There was a problem posting your tweet to Twitter.com.");
            }
        }
Exemplo n.º 49
0
        public static String buildTweets(TweetCollection tc)
        {
            try {
                if (tc.Count == 0)
                {
                    return("no tweets");
                }
                StringBuilder allSb = new StringBuilder();
                int           i     = 0;
                foreach (Tweet tweet in tc)
                {
                    StringBuilder sb = new StringBuilder();
                    int           insertion_index = 0;
                    String        style           = (i % 2 == 0) ? "even_color" : "odd_color";
                    if (tweet.User != null)
                    {
                        sb.Append("<div class='tweet " + style + "'>");
                        insertion_index = sb.Length;
                        sb.Append("<div class='tweetUserName'><a class='user_link' rel='@" + tweet.User.ScreenName + "'>" + "<img src='" + tweet.User.ImageUrl + "'/>" + "</a></div>");
                    }
                    String replyTo  = "";
                    string strTweet = parseTweet(tweet.Text, out replyTo);
                    sb.Append("<div id='" + tweet.Id + "' class='tweetText'>" + strTweet);
                    if (tweet.Paste != null)
                    {
                        sb.Append("<a class='more_text_link'>  More..</a>");
                        sb.Append("<div class='more_text'>");
                        sb.Append(parseTweet(tweet.Paste.Text, out replyTo));
                        sb.Append("</div>");
                    }
                    if (tweet.Assets != null && tweet.Assets.Count > 0)
                    {
                        sb.Append("<div class='tweetAttachment'><span>Attachments:</span>");
                        foreach (Attachment attachment in tweet.Assets)
                        {
                            String url = attachment.Url.Replace("/original/", "/stream_multi_thumb/");
                            if (attachment.ContentType.StartsWith("image"))
                            {
                                sb.Append("<a rel='lightbox' href='" + attachment.Url + "'><img src='" + url + "'/></a>");
                            }
                            else
                            {
                                sb.Append("<a href='" + attachment.Url + "'>" + attachment.FileName + "</a>");
                            }
                        }
                        sb.Append("</div>");
                    }
                    sb.Append("</div>");

                    if (tweet.User != null)
                    {
                        if (replyTo != null)
                        {
                            sb.Insert(insertion_index, "<div class=\"tweetNote\">" + tweet.User.FullName + " To " + replyTo + "</div>");
                        }
                        else if (tweet.User != null)
                        {
                            sb.Insert(insertion_index, "<div class=\"tweetNote\">" + tweet.User.FullName + "</div>");
                        }
                    }
                    if (tweet.RelativeTime != null)
                    {
                        sb.Append("<div class=\"tweetRelativeTime\">" + tweet.RelativeTime + " " + tweet.Source + "</div>");
                    }

                    i++;
                    sb.Append("<div style='clear:both'></div></div>");
                    allSb.Append(sb.ToString());
                }
                return(allSb.ToString());
            }
            catch (Exception err)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("<div>" + err.Message + "</div>" + "<div>" + err.StackTrace + "</div>");
                return(sb.ToString());
            }
        }