In Files

Parent

Included Modules

Rabbiter::Client

Public Class Methods

new(logger) click to toggle source
# File lib/rabbiter.rb, line 37
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

Public Instance Methods

close() click to toggle source
# File lib/rabbiter.rb, line 62
def close
  return if @connection.nil?
  @connection.close
  @connection = nil
end
register_listener(&block) click to toggle source
# File lib/rabbiter.rb, line 46
def register_listener(&block)
  @listeners << block
end
setup() click to toggle source
# File lib/rabbiter.rb, line 50
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 = {
    :consumer_key => CONSUMER_KEY,
    :consumer_secret => CONSUMER_SECRET,
    :access_key => oauth_access_parameters[:access_token],
    :access_secret => oauth_access_parameters[:access_secret],
  }
end
start(*filters, &block) click to toggle source
# File lib/rabbiter.rb, line 68
def start(*filters, &block)
  register_listener(&block) if block_given?
  setup if @oauth_parameters.nil?
  return if @oauth_parameters.nil?

  stream_options = {
    :oauth => @oauth_parameters,
    :user_agent => "Rabbiter #{Rabbiter::VERSION}",
    :method => "POST",
    :filters => filters,
  }
  @stream = ::Twitter::JSONStream.allocate
  @stream.send(:initialize, stream_options)
  @stream.send(:reset_state)
  @connection = GLibConnection.new(@logger, @stream)

  @stream.each_item do |item|
    status = JSON.parse(item)
    @listeners.each do |listener|
      listener.call(status)
    end
  end

  @stream.on_error do |message|
    @logger.error("[twitter] #{message}")
  end

  @stream.on_reconnect do |timeout, n_retries|
    format = _("%{timeout} seconds (%{n_retries})")
    message = format % {:timeout => timeout, :n_retries => retries}
    @logger.info("[twitter][reconnect] #{message}")
  end

  @stream.on_max_reconnects do |timeout, n_retries|
    format = _("Failed after %{n_retries} failed reconnects")
    message = format % {:n_retries => retries}
    @logger.info("[twitter][max-reconnects] #{message}")
  end

  @connection.connect
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.