protected override void OnOpenReadCompleted(OpenReadCompletedEventArgs e)
        {
            Stream         reply     = null;
            StreamReader   s         = null;
            TweetEventArgs eventArgs = new TweetEventArgs();

            try
            {
                reply = e.Result;
                s     = new StreamReader(reply);
                while (!s.EndOfStream)
                {
                    eventArgs.TweetStr = s.ReadLine();
                    ProcessTweet(this, eventArgs);
                }
            }
            finally
            {
                if (s != null)
                {
                    s.Close();
                }

                if (reply != null)
                {
                    reply.Close();
                }
            }
        }
Esempio n. 2
0
        static void source_EventReceived(object sender, TweetEventArgs e)
        {
            try
            {
                // JSON data from Twitter is in e.JsonText.
                // We parse data using Json.NET by James Newton-King
                // http://james.newtonking.com/pages/json-net.aspx.
                //
                if (!string.IsNullOrEmpty(e.JsonText))
                {
                    var    tweet      = JObject.Parse(e.JsonText);
                    string screenName = tweet["user"]["screen_name"].ToString();
                    string text       = tweet["text"].ToString();

                    Console.WriteLine("{0,-15} => {1}", screenName, text);
                    Console.WriteLine();
                }
            }
            catch (JsonReaderException jex)
            {
                Console.Error.WriteLine("Error JSON read failed: " + jex.Message);
                Trace.TraceError("JSON read failed for text: " + e.JsonText);
                Trace.TraceError("JSON read failed exception: " + jex.ToString());
            }
        }
Esempio n. 3
0
        static void source_SourceUp(object sender, TweetEventArgs e)
        {
            // Connection established succesfully
            Console.WriteLine("Source is now ready: " + e.InfoText);
            Trace.TraceInformation("Source is now ready: " + e.InfoText);

            // Reset wait time
            Program.waitReconectTime = 0;
        }
Esempio n. 4
0
        private void StreamOnMatchingTweetReceived(TweetEventArgs tweetEventArgs, Action <ITweetInfo> addTweet)
        {
            var tweet = _tweetProcessor.RecievedTweetInfo(tweetEventArgs.Tweet);

            if (tweet == null)
            {
                return;
            }
            addTweet(tweet);
        }
Esempio n. 5
0
        static void source_SourceDown(object sender, TweetEventArgs e)
        {
            // At this point, the connection thread ends
            Console.WriteLine("Source is down: " + e.InfoText);
            Trace.TraceInformation("Source is down: " + e.InfoText);

            // Calculate new wait time exponetially
            Program.waitReconectTime = Program.waitReconectTime > 0 ?
                                       Program.waitReconectTime * 2 : RECONNECT_BASE_TIME_MS;
            Program.waitReconectTime = Program.waitReconectTime > RECONNECT_MAX_TIME_MS ?
                                       RECONNECT_MAX_TIME_MS : Program.waitReconectTime;
        }
Esempio n. 6
0
 protected void RaiseNonMatchingTweetReceived(TweetEventArgs eventArgs)
 {
     this.Raise(NonMatchingTweetReceived, eventArgs);
 }
Esempio n. 7
0
        static void source_SourceDown(object sender, TweetEventArgs e)
        {
            // At this point, the connection thread ends
            Console.WriteLine("Source is down: " + e.InfoText);
            Trace.TraceInformation("Source is down: " + e.InfoText);

            // Calculate new wait time exponetially
            Program.waitReconectTime = Program.waitReconectTime > 0 ?
                Program.waitReconectTime * 2 : RECONNECT_BASE_TIME_MS;
            Program.waitReconectTime = Program.waitReconectTime > RECONNECT_MAX_TIME_MS ?
                RECONNECT_MAX_TIME_MS : Program.waitReconectTime;
        }
Esempio n. 8
0
 private static void Bot_OnMention(TweetEventArgs e)
 {
     WriteLine(e.Recipient, "Mention", $"[{e.Tweet.Creator.Id}:{e.Tweet.Creator.ScreenName}] => " +
               $"[{e.Tweet.ReplyToUser}] => [{e.Tweet.Id}:{e.Tweet.Text}]");
 }
    private void OnEventReceived(object sender, TweetEventArgs evt)
    {
        try {
            if (!string.IsNullOrEmpty(evt.JsonText))
            {
                Debug.Log($"Received tweet\n{evt.JsonText}");

                var jsonObject     = JObject.Parse(evt.JsonText);
                var isRetweet      = jsonObject.ContainsKey("retweeted_status");
                var isQuotedStatus = jsonObject.ContainsKey("quoted_status");

                var lang           = jsonObject.Value <string>("lang");
                var isEnglishDutch = lang == "en" || lang == "nl";
                if (!isEnglishDutch)
                {
                    Debug.Log("Dropped retweet");
                    return;
                }

                bool   truncated;
                string text, displayName, username;
                if (isRetweet)
                {
                    truncated   = jsonObject["retweeted_status"].Value <bool>("truncated");
                    text        = truncated ? jsonObject["retweeted_status"]["extended_tweet"].Value <string>("full_text") : jsonObject["retweeted_status"].Value <string>("text");
                    displayName = jsonObject["retweeted_status"]["user"].Value <string>("name");
                    username    = jsonObject["retweeted_status"]["user"].Value <string>("screen_name");
                }
                else if (isQuotedStatus)
                {
                    truncated   = jsonObject["quoted_status"].Value <bool>("truncated");
                    text        = truncated ? jsonObject["quoted_status"]["extended_tweet"].Value <string>("full_text") : jsonObject["quoted_status"].Value <string>("text");
                    displayName = jsonObject["quoted_status"]["user"].Value <string>("name");
                    username    = jsonObject["quoted_status"]["user"].Value <string>("screen_name");
                }
                else
                {
                    truncated   = jsonObject.Value <bool>("truncated");
                    text        = truncated ? jsonObject["extended_tweet"].Value <string>("full_text") : jsonObject.Value <string>("text");
                    displayName = jsonObject["user"].Value <string>("name");
                    username    = jsonObject["user"].Value <string>("screen_name");
                }

                text        = text.Replace("\ufe0f", "");
                displayName = displayName.Replace("\ufe0f", "");
                username    = username.Replace("\ufe0f", "");

                var lastSpace = text.LastIndexOf(' ');
                text = text.Substring(0, lastSpace);
                text = HttpUtility.HtmlDecode(text);
                text = Regex.Replace(text, hashtagRegex, $@"$1<color={hashtagColor}>$2</color>");
                text = Regex.Replace(text, atRegex, $@"<color={hashtagColor}>$1</color>");

                TweetQueue.Enqueue(new TweetInfo {
                    Text = text, Name = displayName, Username = $"@{username}"
                });
            }
        } catch (JsonReaderException jex) {
            Debug.LogError("Error JSON read failed: " + jex.Message);
            Debug.LogException(jex);
        }
    }
Esempio n. 10
0
 public void Update(Object sender, TweetEventArgs tweetData)
 {
     Display(tweetData);
 }
 async void OnNonMatchingTweetReceived(object sender, TweetEventArgs args) =>
 await BroadcastTweet(args?.Tweet, true);
 private void OnTweetReceived(object sender, TweetEventArgs tweetEventArg)
 {
     _pusher.Trigger(Config.Pusher.ChannelName, Config.Pusher.StreamErrorTweetEventName, tweetEventArg.JsonText);
 }
 private void OnSourceDown(object sender, TweetEventArgs tweetEventArg)
 {
     var result = _pusher.Trigger(Config.Pusher.ChannelName, Config.Pusher.StreamErrorTweetEventName,new {message = tweetEventArg.InfoText});
 }
Esempio n. 14
0
        static void source_SourceUp(object sender, TweetEventArgs e)
        {
            // Connection established succesfully
            Console.WriteLine("Source is now ready: " + e.InfoText);
            Trace.TraceInformation("Source is now ready: " + e.InfoText);

            // Reset wait time
            Program.waitReconectTime = 0;
        }
 private void OnStreamUp(object sender, TweetEventArgs evt)
 {
     Debug.Log("On Stream Up");
 }
 private void OnStreamDown(object sender, TweetEventArgs evt)
 {
     Debug.Log($"On Stream Down {evt.InfoText}\n{evt.JsonText}");
     TwitterAPI1.Connect(Tracker.ToArray());
 }
Esempio n. 17
0
 private void Display(TweetEventArgs tweetData)
 {
     Console.WriteLine("{0} is so SO wise, what an event!. She tweeted: {1} on {2}", tweetData.Author, tweetData.Text, tweetData.PublicationTime);
 }
Esempio n. 18
0
 private static void Bot_OnComment(TweetEventArgs e)
 {
     WriteLine(e.Recipient, "Comment", $"[{e.Tweet.Creator.Id}:{e.Tweet.Creator.ScreenName}] => " +
               $"[{e.Tweet.ReplyToStatusId.Value}] => [{e.Tweet.Id}:{e.Tweet.Text}]");
 }
Esempio n. 19
0
        private async void WebhookServer_PostReceived(WebhookEventArgs e)
        {
            try
            {
#if !DEBUG
                const string signatureHeader = "X-Twitter-Webhooks-Signature";

                if (!e.Request.Headers.Keys.Contains(signatureHeader))
                {
                    Logger.LogWarning(Resources.InvalidSignature);

                    InvalidPostReceived?.Invoke(e);

                    return;
                }

                var signature = e.Request.Headers[signatureHeader][0];

                if (!VerifySignature(signature, e.BodyRaw))
                {
                    Logger.LogWarning(Resources.InvalidSignature);

                    InvalidPostReceived?.Invoke(e);

                    return;
                }
#endif
                e.IsValid = true;

                if (Recipient != 0)
                {
                    RecipientChecker check = e.Body.FromJson <RecipientChecker>();

                    if (Recipient != check.Recipient)
                    {
                        return;
                    }
                }

                WebhookEvent webhookEvent = e.Body.FromJson <WebhookEvent>();

                if (webhookEvent.DirectMessageEvents != null)
                {
                    if (OnMessage != null)
                    {
                        foreach (var item in webhookEvent.DirectMessageEvents)
                        {
                            MessageEventArgs args = new MessageEventArgs()
                            {
                                Recipient = webhookEvent.Recipient,
                                Message   = item.ToMessage()
                            };

                            await Task.Run(() =>
                            {
                                OnMessage.Invoke(args);
                            });
                        }
                    }
                }

                if (webhookEvent.FollowEvents != null)
                {
                    foreach (var item in webhookEvent.FollowEvents)
                    {
                        if (item.Type == "follow" && OnFollow != null)
                        {
                            FollowEventArgs args = new FollowEventArgs()
                            {
                                Recipient = webhookEvent.Recipient,
                                Timestamp = item.Timestamp,
                                Type      = FollowType.Follow,
                                Target    = item.Target,
                                Source    = item.Source
                            };

                            await Task.Run(() =>
                            {
                                OnFollow.Invoke(args);
                            });
                        }

                        if (item.Type == "unfollow" && OnUnFollow != null)
                        {
                            FollowEventArgs args = new FollowEventArgs()
                            {
                                Recipient = webhookEvent.Recipient,
                                Timestamp = item.Timestamp,
                                Type      = FollowType.Unfollow,
                                Target    = item.Target,
                                Source    = item.Source
                            };

                            await Task.Run(() =>
                            {
                                OnUnFollow.Invoke(args);
                            });
                        }
                    }
                }

                if (webhookEvent.TweetCreateEvents != null)
                {
                    foreach (var item in webhookEvent.TweetCreateEvents)
                    {
                        TweetEventArgs args = new TweetEventArgs()
                        {
                            Recipient = webhookEvent.Recipient,
                            Tweet     = item
                        };

                        bool processed = false;

                        if (item.RetweetedFrom != null)
                        {
                            if (OnRetweet != null)
                            {
                                await Task.Run(() =>
                                {
                                    OnRetweet.Invoke(args);
                                });
                            }

                            processed = true;
                        }

                        if (item.QuotedFrom != null)
                        {
                            if (OnQuote != null)
                            {
                                await Task.Run(() =>
                                {
                                    OnQuote.Invoke(args);
                                });
                            }

                            processed = true;
                        }

                        if (item.ReplyToUserId != null && item.ReplyToStatusId != null)
                        {
                            if (OnComment != null)
                            {
                                await Task.Run(() =>
                                {
                                    OnComment.Invoke(args);
                                });
                            }

                            processed = true;
                        }

                        if (item.ReplyToUserId != null && item.ReplyToStatusId == null)
                        {
                            if (OnMention != null)
                            {
                                await Task.Run(() =>
                                {
                                    OnMention.Invoke(args);
                                });
                            }

                            processed = true;
                        }

                        if (!processed)
                        {
                            if (OnTweet != null)
                            {
                                await Task.Run(() =>
                                {
                                    OnTweet.Invoke(args);
                                });
                            }
                        }
                    }

                    #region
                    //if (Tweeted != null)
                    //{
                    //    foreach (var item in webhookEvent.TweetCreateEvents)
                    //    {
                    //        TweetCreateEventArgs args = new TweetCreateEventArgs()
                    //        {
                    //            Tweet = item
                    //        };

                    //        Tweeted.Invoke(args);
                    //    }
                    //}
                    #endregion
                }

                if (webhookEvent.LikeEvents != null)
                {
                    if (OnLike != null)
                    {
                        foreach (var item in webhookEvent.LikeEvents)
                        {
                            LikeEventArgs args = new LikeEventArgs()
                            {
                                Recipient = webhookEvent.Recipient,
                                Id        = item.Id,
                                Timestamp = item.Timestamp,
                                Tweet     = item.Tweet,
                                User      = item.User
                            };

                            await Task.Run(() =>
                            {
                                OnLike.Invoke(args);
                            });
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogError(EventId, ex, ex.Message);
            }
        }
Esempio n. 20
0
 private static void Bot_OnRetweet(TweetEventArgs e)
 {
     WriteLine(e.Recipient, "Retweet", $"[{e.Tweet.Creator.Id}:{e.Tweet.Creator.ScreenName}] => " +
               $"[{e.Tweet.RetweetedFrom.Id}:{e.Tweet.RetweetedFrom.Text}] => [{e.Tweet.Id}]");
 }
Esempio n. 21
0
        static void source_EventReceived(object sender, TweetEventArgs e)
        {
            try
            {
                // JSON data from Twitter is in e.JsonText.
                // We parse data using Json.NET by James Newton-King
                // http://james.newtonking.com/pages/json-net.aspx.
                //
                if (!string.IsNullOrEmpty(e.JsonText))
                {

                    var tweet = JObject.Parse(e.JsonText);
                    string screenName = tweet["user"]["screen_name"].ToString();
                    string text = tweet["text"].ToString();

                    Console.WriteLine("{0,-15} => {1}", screenName, text);
                    Console.WriteLine();
                }
            }
            catch (JsonReaderException jex)
            {
                Console.Error.WriteLine("Error JSON read failed: " + jex.Message);
                Trace.TraceError("JSON read failed for text: " + e.JsonText);
                Trace.TraceError("JSON read failed exception: " + jex.ToString());
            }
        }