Sha256: ca63c2d975f4fb5a60d5c9b968c2e620827722538b5e6189afa44bc2af767019

Contents?: true

Size: 1.43 KB

Versions: 3

Compression:

Stored size: 1.43 KB

Contents

require "fluent/output"

class Fluent::TwitterOutput < Fluent::Output
  Fluent::Plugin.register_output('twitter', self)

  config_param :consumer_key, :string, :secret => true
  config_param :consumer_secret, :string, :secret => true
  config_param :oauth_token, :string, :default => nil, :secret => true
  config_param :oauth_token_secret, :string, :default => nil, :secret => true
  config_param :access_token, :string, :default => nil, :secret => true
  config_param :access_token_secret, :string, :default => nil, :secret => true

  def initialize
    super
    require 'twitter'
  end

  def configure(conf)
    super

    @access_token = @access_token || @oauth_token
    @access_token_secret = @access_token_secret || @oauth_token_secret
    if !@consumer_key or !@consumer_secret or !@access_token or !@access_token_secret
      raise Fluent::ConfigError, "missing values in consumer_key or consumer_secret or oauth_token or oauth_token_secret"
    end

    @twitter = Twitter::REST::Client.new(
      :consumer_key => @consumer_key,
      :consumer_secret => @consumer_secret,
      :access_token => @access_token,
      :access_token_secret => @access_token_secret
    )
  end

  def emit(tag, es, chain)
    es.each do |time,record|
      tweet(record['message'])
    end

    chain.next
  end

  def tweet(message)
    begin
      @twitter.update(message)
    rescue Twitter::Error => e
      $log.error("Twitter Error: #{e.message}")
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fluent-plugin-twitter-0.6.0 lib/fluent/plugin/out_twitter.rb
fluent-plugin-twitter-0.5.4 lib/fluent/plugin/out_twitter.rb
fluent-plugin-twitter-0.5.3 lib/fluent/plugin/out_twitter.rb