class Rbitter::StreamClient
Public Class Methods
new(tokens)
click to toggle source
# File lib/rbitter/streaming.rb, line 35 def initialize(tokens) @t = Twitter::Streaming::Client.new do |object| object.consumer_key = tokens['consumer_key'] object.consumer_secret = tokens['consumer_secret'] object.access_token = tokens['access_token'] object.access_token_secret = tokens['access_token_secret'] end end
Public Instance Methods
run(&operation_block)
click to toggle source
# File lib/rbitter/streaming.rb, line 44 def run(&operation_block) begin internal(&operation_block) rescue EOFError => e puts "Network unreachable. Retry in 3 seconds..." sleep 3 retry end end
Private Instance Methods
internal() { |res| ... }
click to toggle source
# File lib/rbitter/streaming.rb, line 55 def internal(&operation_block) @t.user do |tweet| if tweet.is_a?(Twitter::Tweet) if tweet.retweet? tweet = tweet.retweeted_tweet end text = tweet.full_text.gsub(/(\r\n|\n)/, '') # unpack uris and media links media_urls = Array.new web_urls = Array.new if tweet.entities? if tweet.media? tweet.media.each { |media| media_urls.push("#{media.media_uri_https}") text.gsub!("#{media.url}", "#{media.display_url}") } end text += " " text += media_urls.join(" ") if tweet.uris? tweet.uris.each { |uri| web_urls.push("#{uri.expanded_url}") text.gsub!("#{uri.url}", "#{uri.expanded_url}") } end end res = { "tweetid" => tweet.id, "userid" => tweet.user.id, "replyto" => tweet.in_reply_to_status_id? ? tweet.in_reply_to_status_id : nil, "tweet" => text, "rt_count" => tweet.retweet_count, "fav_count" => tweet.favorite_count, "screen_name" => tweet.user.screen_name, "date" => tweet.created_at, "media_urls" => media_urls, "web_urls" => web_urls } yield res end end end