Class: Rabbiter::Client

Inherits:
Object
  • Object
show all
Includes:
GetText
Defined in:
lib/rabbiter.rb

Constant Summary collapse

CONSUMER_KEY =
"wT9WSC0afRw94fxUw0iIKw"
CONSUMER_SECRET =
"mwY35vfQfmWde9lZbyNNB15QzCq3k2VwGj3X1IAkQ8"

Constants included from GetText

GetText::DOMAIN

Instance Method Summary collapse

Methods included from GetText

included

Constructor Details

#initialize(logger) ⇒ Client

Returns a new instance of Client.



36
37
38
39
40
41
42
43
# File 'lib/rabbiter.rb', line 36

def initialize(logger)
  @logger = logger
  @oauth_parameters = nil
  @config_file_path = Pathname.new("~/.rabbit/twitter-oauth.yaml")
  @config_file_path = @config_file_path.expand_path
  @listeners = []
  @connection = nil
end

Instance Method Details

#closeObject



59
60
61
62
63
# File 'lib/rabbiter.rb', line 59

def close
  return if @connection.nil?
  @connection.close
  @connection = nil
end

#register_listener(&block) ⇒ Object



45
46
47
# File 'lib/rabbiter.rb', line 45

def register_listener(&block)
  @listeners << block
end

#setupObject



49
50
51
52
53
54
55
56
57
# File 'lib/rabbiter.rb', line 49

def setup
  return unless @oauth_parameters.nil?
  setup_access_token unless @config_file_path.exist?
  oauth_access_parameters = YAML.load(@config_file_path.read)
  @oauth_parameters = {
    :access_key => oauth_access_parameters[:access_token],
    :access_secret => oauth_access_parameters[:access_secret],
  }
end

#start(*filters, &block) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/rabbiter.rb', line 65

def start(*filters, &block)
  register_listener(&block) if block_given?
  setup if @oauth_parameters.nil?
  return if @oauth_parameters.nil?

  stream_options = {
    :access_token        => @oauth_parameters[:access_key],
    :access_token_secret => @oauth_parameters[:access_secret],
    :consumer_key        => CONSUMER_KEY,
    :consumer_secret     => CONSUMER_SECRET,
    :user_agent          => "Rabbiter #{Rabbiter::VERSION}",
  }
  @client = ::Twitter::Streaming::Client.new(stream_options)
  @client.filter(:track => filters.join(",")) do |status|
    @listeners.each do |listener|
      listener.call(status)
    end
  end
end