fluent-plugin-twitter 0.2.4 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -1,5 +1,6 @@
1
1
  language: ruby
2
2
 
3
3
  rvm:
4
+ - 2.1.0
4
5
  - 2.0.0
5
6
  - 1.9.3
data/Gemfile CHANGED
@@ -2,4 +2,3 @@ source "http://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in fluent-plugin-twitter.gemspec
4
4
  gemspec
5
- gem "twitter"
data/README.md CHANGED
@@ -4,6 +4,18 @@ fluent-plugin-twitter [![Build Status](https://travis-ci.org/y-ken/fluent-plugin
4
4
  ## Component
5
5
  Fluentd Input/Output plugin to process tweets with Twitter Streaming API.
6
6
 
7
+ ## Dependency
8
+
9
+ before use, install dependent library as:
10
+
11
+ ```bash
12
+ # for RHEL/CentOS
13
+ $ sudo yum install openssl-devel
14
+
15
+ # for Ubuntu/Debian
16
+ $ sudo apt-get install libssl-dev
17
+ ```
18
+
7
19
  ## Installation
8
20
 
9
21
  ### native gem
@@ -57,8 +69,8 @@ $ tail -f /var/log/td-agent/td-agent.log
57
69
  type twitter
58
70
  consumer_key YOUR_CONSUMER_KEY
59
71
  consumer_secret YOUR_CONSUMER_SECRET
60
- oauth_token YOUR_OAUTH_TOKEN
61
- oauth_token_secret YOUR_OAUTH_TOKEN_SECRET
72
+ access_token YOUR_OAUTH_TOKEN
73
+ access_token_secret YOUR_OAUTH_TOKEN_SECRET
62
74
  </match>
63
75
  `````
64
76
 
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "fluent-plugin-twitter"
6
- s.version = "0.2.4"
6
+ s.version = "0.3.0"
7
7
  s.authors = ["Kentaro Yoshida"]
8
8
  s.email = ["y.ken.studio@gmail.com"]
9
9
  s.homepage = "https://github.com/y-ken/fluent-plugin-twitter"
@@ -16,8 +16,8 @@ Gem::Specification.new do |s|
16
16
 
17
17
  # specify any dependencies here; for example:
18
18
  s.add_development_dependency "rake"
19
- s.add_runtime_dependency "fluentd"
20
- s.add_runtime_dependency "em-twitter", ["= 0.2.2"]
21
- s.add_runtime_dependency "twitter", ["= 4.8.1"]
22
- s.add_runtime_dependency "tweetstream", ["= 2.5.0"]
19
+ s.add_runtime_dependency "fluentd", [">= 0.10.46"]
20
+ s.add_runtime_dependency "em-twitter"
21
+ s.add_runtime_dependency "twitter"
22
+ s.add_runtime_dependency "tweetstream"
23
23
  end
@@ -31,6 +31,8 @@ module Fluent
31
31
  raise Fluent::ConfigError, "output_format value undefined #{@output_format}"
32
32
  end
33
33
 
34
+ @keyword = @keyword.gsub('${hashtag}', '#') unless @keyword.nil?
35
+
34
36
  TweetStream.configure do |config|
35
37
  config.consumer_key = @consumer_key
36
38
  config.consumer_secret = @consumer_secret
@@ -3,8 +3,10 @@ class Fluent::TwitterOutput < Fluent::Output
3
3
 
4
4
  config_param :consumer_key, :string
5
5
  config_param :consumer_secret, :string
6
- config_param :oauth_token, :string
7
- config_param :oauth_token_secret, :string
6
+ config_param :oauth_token, :string, :default => nil
7
+ config_param :oauth_token_secret, :string, :default => nil
8
+ config_param :access_token, :string, :default => nil
9
+ config_param :access_token_secret, :string, :default => nil
8
10
 
9
11
  def initialize
10
12
  super
@@ -14,11 +16,17 @@ class Fluent::TwitterOutput < Fluent::Output
14
16
  def configure(conf)
15
17
  super
16
18
 
19
+ @access_token = @access_token || @oauth_token
20
+ @access_token_secret = @access_token_secret || @oauth_token_secret
21
+ if !@consumer_key or !@consumer_secret or !@access_token or !@access_token_secret
22
+ raise Fluent::ConfigError, "missing values in consumer_key or consumer_secret or oauth_token or oauth_token_secret"
23
+ end
24
+
17
25
  @twitter = Twitter::Client.new(
18
- :consumer_key => conf['consumer_key'],
19
- :consumer_secret => conf['consumer_secret'],
20
- :oauth_token => conf['oauth_token'],
21
- :oauth_token_secret => conf['oauth_token_secret']
26
+ :consumer_key => @consumer_key,
27
+ :consumer_secret => @consumer_secret,
28
+ :access_token => @access_token,
29
+ :access_token_secret => @access_token_secret
22
30
  )
23
31
  end
24
32
 
@@ -29,12 +29,13 @@ class TwitterInputTest < Test::Unit::TestCase
29
29
  oauth_token_secret OAUTH_TOKEN_SECRET
30
30
  tag input.twitter
31
31
  timeline sampling
32
+ keyword ${hashtag}ruby lang:ja "happy hour" :)
32
33
  ]
33
- d.instance.inspect
34
34
  assert_equal 'CONSUMER_KEY', d.instance.consumer_key
35
35
  assert_equal 'CONSUMER_SECRET', d.instance.consumer_secret
36
36
  assert_equal 'OAUTH_TOKEN', d.instance.oauth_token
37
37
  assert_equal 'OAUTH_TOKEN_SECRET', d.instance.oauth_token_secret
38
+ assert_equal '#ruby lang:ja "happy hour" :)', d.instance.keyword
38
39
  end
39
40
  end
40
41
 
@@ -8,8 +8,8 @@ class TwitterOutputTest < Test::Unit::TestCase
8
8
  CONFIG = %[
9
9
  consumer_key CONSUMER_KEY
10
10
  consumer_secret CONSUMER_SECRET
11
- oauth_token OAUTH_TOKEN
12
- oauth_token_secret OAUTH_TOKEN_SECRET
11
+ access_token ACCESS_TOKEN
12
+ access_token_secret ACCESS_TOKEN_SECRET
13
13
  ]
14
14
 
15
15
  def create_driver(conf=CONFIG,tag='test')
@@ -23,24 +23,26 @@ class TwitterOutputTest < Test::Unit::TestCase
23
23
  d = create_driver %[
24
24
  consumer_key CONSUMER_KEY
25
25
  consumer_secret CONSUMER_SECRET
26
- oauth_token OAUTH_TOKEN
27
- oauth_token_secret OAUTH_TOKEN_SECRET
26
+ access_token ACCESS_TOKEN
27
+ access_token_secret ACCESS_TOKEN_SECRET
28
28
  ]
29
- d.instance.inspect
30
29
  assert_equal 'CONSUMER_KEY', d.instance.consumer_key
31
30
  assert_equal 'CONSUMER_SECRET', d.instance.consumer_secret
32
- assert_equal 'OAUTH_TOKEN', d.instance.oauth_token
33
- assert_equal 'OAUTH_TOKEN_SECRET', d.instance.oauth_token_secret
31
+ assert_equal 'ACCESS_TOKEN', d.instance.access_token
32
+ assert_equal 'ACCESS_TOKEN_SECRET', d.instance.access_token_secret
34
33
  end
35
34
 
36
- def test_emit
37
- d1 = create_driver(CONFIG, 'input.access')
38
- time = Time.parse("2012-01-02 13:14:15").to_i
39
- d1.run do
40
- d1.emit({'message' => 'sample message'})
41
- end
42
- emits = d1.emits
43
- assert_equal 0, emits.length
35
+ def test_configure_compatible
36
+ d = create_driver %[
37
+ consumer_key CONSUMER_KEY
38
+ consumer_secret CONSUMER_SECRET
39
+ oauth_token ACCESS_TOKEN
40
+ oauth_token_secret ACCESS_TOKEN_SECRET
41
+ ]
42
+ assert_equal 'CONSUMER_KEY', d.instance.consumer_key
43
+ assert_equal 'CONSUMER_SECRET', d.instance.consumer_secret
44
+ assert_equal 'ACCESS_TOKEN', d.instance.access_token
45
+ assert_equal 'ACCESS_TOKEN_SECRET', d.instance.access_token_secret
44
46
  end
45
47
  end
46
48
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-twitter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-03 00:00:00.000000000 Z
12
+ date: 2014-04-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
- version: '0'
37
+ version: 0.10.46
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,55 +42,55 @@ dependencies:
42
42
  requirements:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
- version: '0'
45
+ version: 0.10.46
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: em-twitter
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
- - - '='
51
+ - - ! '>='
52
52
  - !ruby/object:Gem::Version
53
- version: 0.2.2
53
+ version: '0'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
- - - '='
59
+ - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
- version: 0.2.2
61
+ version: '0'
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: twitter
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
- - - '='
67
+ - - ! '>='
68
68
  - !ruby/object:Gem::Version
69
- version: 4.8.1
69
+ version: '0'
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
- - - '='
75
+ - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
- version: 4.8.1
77
+ version: '0'
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: tweetstream
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
83
- - - '='
83
+ - - ! '>='
84
84
  - !ruby/object:Gem::Version
85
- version: 2.5.0
85
+ version: '0'
86
86
  type: :runtime
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
89
89
  none: false
90
90
  requirements:
91
- - - '='
91
+ - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
- version: 2.5.0
93
+ version: '0'
94
94
  description:
95
95
  email:
96
96
  - y.ken.studio@gmail.com