class LogStash::Inputs::Twitter

Read events from the twitter streaming api.

Public Instance Methods

register() click to toggle source
# File lib/logstash/inputs/twitter.rb, line 51
def register
  require "twitter"
  @client = Twitter::Streaming::Client.new do |c|
    c.consumer_key = @consumer_key
    c.consumer_secret = @consumer_secret.value
    c.access_token = @oauth_token
    c.access_token_secret = @oauth_token_secret.value
  end
end
run(queue) click to toggle source
# File lib/logstash/inputs/twitter.rb, line 62
def run(queue)
  @logger.info("Starting twitter tracking", :keywords => @keywords)
  @client.filter(:track => @keywords.join(",")) do |tweet|
    @logger.info? && @logger.info("Got tweet", :user => tweet.user.screen_name, :text => tweet.text)
    event = LogStash::Event.new(
      "@timestamp" => tweet.created_at.gmtime,
      "message" => tweet.full_text,
      "user" => tweet.user.screen_name,
      "client" => tweet.source,
      "retweeted" => tweet.retweeted?,
      "source" => "http://twitter.com/#{tweet.user.screen_name}/status/#{tweet.id}"
    )
    decorate(event)
    event["in-reply-to"] = tweet.in_reply_to_status_id if tweet.reply?
    unless tweet.urls.empty?
      event["urls"] = tweet.urls.map(&:expanded_url).map(&:to_s)
    end
    queue << event
  end # client.filter
end