class T::Stream

Constants

TWEET_HEADINGS_FORMATTING

Public Class Methods

new(*) click to toggle source
Calls superclass method
# File lib/t/stream.rb, line 22
def initialize(*)
  @rcfile = T::RCFile.instance
  super
end

Public Instance Methods

all() click to toggle source
# File lib/t/stream.rb, line 31
def all
  streaming_client.before_request do
    if options['csv']
      require 'csv'
      say TWEET_HEADINGS.to_csv
    elsif options['long'] && STDOUT.tty?
      headings = Array.new(TWEET_HEADINGS.size) do |index|
        TWEET_HEADINGS_FORMATTING[index] % TWEET_HEADINGS[index]
      end
      print_table([headings])
    end
  end
  streaming_client.sample do |tweet|
    next unless tweet.is_a?(Twitter::Tweet)
    if options['csv']
      print_csv_tweet(tweet)
    elsif options['long']
      array = build_long_tweet(tweet).each_with_index.collect do |element, index|
        TWEET_HEADINGS_FORMATTING[index] % element
      end
      print_table([array], truncate: STDOUT.tty?)
    else
      print_message(tweet.user.screen_name, tweet.text)
    end
  end
end
list(user_list) click to toggle source
# File lib/t/stream.rb, line 64
def list(user_list)
  owner, list_name = extract_owner(user_list, options)
  require 't/list'
  streaming_client.before_request do
    list = T::List.new
    list.options = list.options.merge(options)
    list.options = list.options.merge(reverse: true)
    list.options = list.options.merge(format: TWEET_HEADINGS_FORMATTING)
    list.timeline(user_list)
  end
  user_ids = client.list_members(owner, list_name).collect(&:id)
  streaming_client.filter(follow: user_ids.join(',')) do |tweet|
    next unless tweet.is_a?(Twitter::Tweet)
    if options['csv']
      print_csv_tweet(tweet)
    elsif options['long']
      array = build_long_tweet(tweet).each_with_index.collect do |element, index|
        TWEET_HEADINGS_FORMATTING[index] % element
      end
      print_table([array], truncate: STDOUT.tty?)
    else
      print_message(tweet.user.screen_name, tweet.text)
    end
  end
end
matrix() click to toggle source
# File lib/t/stream.rb, line 92
def matrix
  require 't/cli'
  streaming_client.before_request do
    cli = T::CLI.new
    cli.matrix
  end
  streaming_client.sample(language: 'ja') do |tweet|
    next unless tweet.is_a?(Twitter::Tweet)
    say(tweet.text.gsub(/[^\u3000\u3040-\u309f]/, '').reverse, [:bold, :green, :on_black], false)
  end
end
timeline() click to toggle source
# File lib/t/stream.rb, line 137
def timeline
  require 't/cli'
  streaming_client.before_request do
    cli = T::CLI.new
    cli.options = cli.options.merge(options)
    cli.options = cli.options.merge(reverse: true)
    cli.options = cli.options.merge(format: TWEET_HEADINGS_FORMATTING)
    cli.timeline
  end
  streaming_client.user do |tweet|
    next unless tweet.is_a?(Twitter::Tweet)
    if options['csv']
      print_csv_tweet(tweet)
    elsif options['long']
      array = build_long_tweet(tweet).each_with_index.collect do |element, index|
        TWEET_HEADINGS_FORMATTING[index] % element
      end
      print_table([array], truncate: STDOUT.tty?)
    else
      print_message(tweet.user.screen_name, tweet.text)
    end
  end
end
users(user_id, *user_ids) click to toggle source
# File lib/t/stream.rb, line 165
def users(user_id, *user_ids)
  user_ids.unshift(user_id)
  user_ids.collect!(&:to_i)
  streaming_client.before_request do
    if options['csv']
      require 'csv'
      say TWEET_HEADINGS.to_csv
    elsif options['long'] && STDOUT.tty?
      headings = Array.new(TWEET_HEADINGS.size) do |index|
        TWEET_HEADINGS_FORMATTING[index] % TWEET_HEADINGS[index]
      end
      print_table([headings])
    end
  end
  streaming_client.filter(follow: user_ids.join(',')) do |tweet|
    next unless tweet.is_a?(Twitter::Tweet)
    if options['csv']
      print_csv_tweet(tweet)
    elsif options['long']
      array = build_long_tweet(tweet).each_with_index.collect do |element, index|
        TWEET_HEADINGS_FORMATTING[index] % element
      end
      print_table([array], truncate: STDOUT.tty?)
    else
      print_message(tweet.user.screen_name, tweet.text)
    end
  end
end

Private Instance Methods

streaming_client() click to toggle source
# File lib/t/stream.rb, line 196
def streaming_client
  return @streaming_client if @streaming_client
  @rcfile.path = options['profile'] if options['profile']
  @streaming_client = Twitter::Streaming::Client.new do |config|
    config.consumer_key        = @rcfile.active_consumer_key
    config.consumer_secret     = @rcfile.active_consumer_secret
    config.access_token        = @rcfile.active_token
    config.access_token_secret = @rcfile.active_secret
  end
end