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(); } } }
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()); } }
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 StreamOnMatchingTweetReceived(TweetEventArgs tweetEventArgs, Action <ITweetInfo> addTweet) { var tweet = _tweetProcessor.RecievedTweetInfo(tweetEventArgs.Tweet); if (tweet == null) { return; } addTweet(tweet); }
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; }
protected void RaiseNonMatchingTweetReceived(TweetEventArgs eventArgs) { this.Raise(NonMatchingTweetReceived, eventArgs); }
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); } }
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}); }
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()); }
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); }
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}]"); }
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); } }
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}]"); }