fluent-plugin-twitter 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6b1e658b7db60b26ce58747d37000b8fd4116116
4
+ data.tar.gz: c68743476f6ca3b9d6c6842d75ee7f45d155615b
5
+ SHA512:
6
+ metadata.gz: dae43c14a04a6d1d1d28b79a3fe174879796c237e884314e4a6bd1d28eeb2dc0a1ad03aecd45138540abce45890df61b75ae611038b93aec86362e8432a2179f
7
+ data.tar.gz: 9e4c2dd35b8c3d1ab269450cba3728be10e51e7ea876e63a0a10fcedbc9ea06cba88eb0d4a86f617627bac8f1bc6bb8619d606ad14e15cb2dde27a8de1fed131
@@ -2,7 +2,8 @@ sudo: false
2
2
  language: ruby
3
3
 
4
4
  rvm:
5
- - 2.3.1
5
+ - 2.4.1
6
+ - 2.3.4
6
7
  - 2.2.5
7
8
  - 2.1.10
8
9
 
@@ -11,20 +12,4 @@ before_install:
11
12
 
12
13
  gemfile:
13
14
  - Gemfile
14
- - gemfiles/fluentd_v0.10.gemfile
15
- - gemfiles/fluentd_v0.12.gemfile
16
15
  - gemfiles/fluentd_v0.14.gemfile
17
-
18
- matrix:
19
- include:
20
- - rvm: 2.0.0
21
- gemfile: gemfiles/fluentd_v0.10.gemfile
22
- - rvm: 2.0.0
23
- gemfile: gemfiles/fluentd_v0.12.gemfile
24
- exclude:
25
- - rvm: 2.3.1
26
- gemfile: gemfiles/fluentd_v0.10.gemfile
27
- - rvm: 1.9.3
28
- gemfile: gemfiles/fluentd_v0.10.gemfile
29
- - rvm: 1.9.3
30
- gemfile: gemfiles/fluentd_v0.12.gemfile
data/Appraisals CHANGED
@@ -1,11 +1,3 @@
1
- appraise "fluentd v0.10" do
2
- gem "fluentd", "~> 0.10.46"
3
- end
4
-
5
- appraise "fluentd v0.12" do
6
- gem "fluentd", "~> 0.12.0"
7
- end
8
-
9
1
  appraise "fluentd v0.14" do
10
2
  gem "fluentd", "~> 0.14.0"
11
3
  end
data/README.md CHANGED
@@ -16,22 +16,25 @@ $ sudo yum -y install gcc gcc-c++ openssl-devel libcurl libcurl-devel
16
16
  $ sudo apt-get install build-essential libssl-dev
17
17
  ```
18
18
 
19
+ ## Requirements
20
+
21
+ | fluent-plugin-twitter | fluentd | ruby |
22
+ |--------------------|------------|--------|
23
+ | 0.6.1 | v0.14.x | >= 2.1 |
24
+ | 0.5.4 | v0.12.x | >= 1.9 |
25
+
19
26
  ## Installation
20
27
 
21
- install with `gem` or `fluent-gem` command as:
28
+ install with `gem` or `td-agent-gem` command as:
22
29
 
23
30
  ```
24
31
  # for fluentd
25
32
  $ gem install eventmachine
26
33
  $ gem install fluent-plugin-twitter
27
34
 
28
- # for td-agent
29
- $ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install eventmachine
30
- $ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-twitter -v 0.6.0
31
-
32
35
  # for td-agent2
33
36
  $ sudo td-agent-gem install eventmachine
34
- $ sudo td-agent-gem install fluent-plugin-twitter -v 0.6.0
37
+ $ sudo td-agent-gem install fluent-plugin-twitter -v 0.5.4
35
38
  ```
36
39
 
37
40
  ## Input Configuration
@@ -1,9 +1,8 @@
1
- # -*- encoding: utf-8 -*-
2
1
  $:.push File.expand_path("../lib", __FILE__)
3
2
 
4
3
  Gem::Specification.new do |s|
5
4
  s.name = "fluent-plugin-twitter"
6
- s.version = "0.6.0"
5
+ s.version = "0.6.1"
7
6
  s.authors = ["Kentaro Yoshida"]
8
7
  s.email = ["y.ken.studio@gmail.com"]
9
8
  s.homepage = "https://github.com/y-ken/fluent-plugin-twitter"
@@ -15,11 +14,12 @@ Gem::Specification.new do |s|
15
14
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
15
  s.require_paths = ["lib"]
17
16
 
17
+ s.required_ruby_version = "> 2.1"
18
+
18
19
  s.add_development_dependency "rake"
19
20
  s.add_development_dependency "test-unit", ">= 3.1.0"
20
21
  s.add_development_dependency "appraisal"
21
22
 
22
- s.add_runtime_dependency "fluentd", [">= 0.10.46", "< 2"]
23
- s.add_runtime_dependency "twitter", "~> 5.0"
24
- s.add_runtime_dependency "string-scrub", [">= 0.0.3", "<= 0.0.5"]
23
+ s.add_runtime_dependency "fluentd", [">= 0.14.0", "< 2"]
24
+ s.add_runtime_dependency "twitter", "~> 6.0"
25
25
  end
@@ -1,47 +1,38 @@
1
+ require "fluent/plugin/input"
2
+
1
3
  require 'twitter'
2
4
  require 'nkf'
3
- require 'string/scrub' if RUBY_VERSION.to_f < 2.1
4
5
 
5
- require "fluent/input"
6
+ module Fluent::Plugin
7
+ class TwitterInput < Fluent::Plugin::Input
8
+ Fluent::Plugin.register_input('twitter', self)
6
9
 
7
- module Fluent
8
- class TwitterInput < Fluent::Input
9
- TIMELINE_TYPE = %w(userstream sampling location tracking)
10
- OUTPUT_FORMAT_TYPE = %w(nest flat simple)
11
- Plugin.register_input('twitter', self)
10
+ helpers :thread
12
11
 
13
- # To support Fluentd v0.10.57 or earlier
14
- unless method_defined?(:router)
15
- define_method("router") { Fluent::Engine }
16
- end
12
+ TIMELINE_TYPE = %i(userstream sampling location tracking)
13
+ OUTPUT_FORMAT_TYPE = %i(nest flat simple)
17
14
 
18
- config_param :consumer_key, :string, :secret => true
19
- config_param :consumer_secret, :string, :secret => true
20
- config_param :access_token, :string, :secret => true
21
- config_param :access_token_secret, :string, :secret => true
15
+ config_param :consumer_key, :string, secret: true
16
+ config_param :consumer_secret, :string, secret: true
17
+ config_param :access_token, :string, secret: true
18
+ config_param :access_token_secret, :string, secret: true
22
19
  config_param :tag, :string
23
- config_param :timeline, :string
24
- config_param :keyword, :string, :default => nil
25
- config_param :follow_ids, :string, :default => nil
26
- config_param :locations, :string, :default => nil
27
- config_param :lang, :string, :default => nil
28
- config_param :output_format, :string, :default => 'simple'
29
- config_param :flatten_separator, :string, :default => '_'
20
+ config_param :timeline, :enum, list: TIMELINE_TYPE
21
+ config_param :keyword, :string, default: nil
22
+ config_param :follow_ids, :string, default: nil
23
+ config_param :locations, :string, default: nil
24
+ config_param :lang, :string, default: nil
25
+ config_param :output_format, :enum, list: OUTPUT_FORMAT_TYPE, default: :simple
26
+ config_param :flatten_separator, :string, default: '_'
30
27
 
31
28
  def initialize
32
29
  super
30
+ @running = false
33
31
  end
34
32
 
35
33
  def configure(conf)
36
34
  super
37
35
 
38
- if !TIMELINE_TYPE.include?(@timeline)
39
- raise Fluent::ConfigError, "timeline value undefined #{@timeline}"
40
- end
41
- if !OUTPUT_FORMAT_TYPE.include?(@output_format)
42
- raise Fluent::ConfigError, "output_format value undefined #{@output_format}"
43
- end
44
-
45
36
  @keyword = @keyword.gsub('${hashtag}', '#') unless @keyword.nil?
46
37
 
47
38
  @client = Twitter::Streaming::Client.new do |config|
@@ -53,11 +44,15 @@ module Fluent
53
44
  end
54
45
 
55
46
  def start
56
- @thread = Thread.new(&method(:run))
47
+ @running = true
48
+ thread_create(:in_twitter) do
49
+ run
50
+ end
57
51
  end
58
52
 
59
53
  def shutdown
60
- Thread.kill(@thread)
54
+ @running = false
55
+ super
61
56
  end
62
57
 
63
58
  def run
@@ -66,20 +61,21 @@ module Fluent
66
61
  notice << " lang:#{@lang}" unless @lang.nil?
67
62
  notice << " keyword:#{@keyword}" unless @keyword.nil?
68
63
  notice << " follow:#{@follow_ids}" unless @follow_ids.nil? && !@keyword.nil?
69
- $log.info notice
64
+ log.info notice
70
65
 
71
- if ['sampling', 'tracking'].include?(@timeline) && @keyword
66
+ if [:sampling, :tracking].include?(@timeline) && @keyword
72
67
  @client.filter(track: @keyword, &method(:handle_object))
73
- elsif @timeline == 'tracking' && @follow_ids
68
+ elsif @timeline == :tracking && @follow_ids
74
69
  @client.filter(follow: @follow_ids, &method(:handle_object))
75
- elsif @timeline == 'sampling' && @keyword.nil? && @follow_ids.nil?
70
+ elsif @timeline == :sampling && @keyword.nil? && @follow_ids.nil?
76
71
  @client.sample(&method(:handle_object))
77
- elsif @timeline == 'userstream'
72
+ elsif @timeline == :userstream
78
73
  @client.user(&method(:handle_object))
79
74
  end
80
75
  end
81
76
 
82
77
  def handle_object(object)
78
+ return unless @running
83
79
  if is_message?(object)
84
80
  get_message(object)
85
81
  end
@@ -88,7 +84,7 @@ module Fluent
88
84
  def is_message?(tweet)
89
85
  return false if !tweet.is_a?(Twitter::Tweet)
90
86
  return false if (!@lang.nil? && @lang != '') && !@lang.include?(tweet.user.lang)
91
- if @timeline == 'userstream' && (!@keyword.nil? && @keyword != '')
87
+ if @timeline == :userstream && (!@keyword.nil? && @keyword != '')
92
88
  pattern = NKF::nkf('-WwZ1', @keyword).gsub(/,\s?/, '|')
93
89
  tweet = NKF::nkf('-WwZ1', tweet.text)
94
90
  return false if !Regexp.new(pattern, Regexp::IGNORECASE).match(tweet)
@@ -98,23 +94,23 @@ module Fluent
98
94
 
99
95
  def get_message(tweet)
100
96
  case @output_format
101
- when 'nest'
97
+ when :nest
102
98
  record = hash_key_to_s(tweet.to_h)
103
- when 'flat'
99
+ when :flat
104
100
  record = hash_flatten(tweet.to_h)
105
- when 'simple'
106
- record = Hash.new
107
- record.store('message', tweet.text).scrub('')
108
- record.store('geo', tweet.geo)
109
- record.store('place', tweet.place)
110
- record.store('created_at', tweet.created_at)
111
- record.store('user_name', tweet.user.name)
112
- record.store('user_screen_name', tweet.user.screen_name)
113
- record.store('user_profile_image_url', tweet.user.profile_image_url)
114
- record.store('user_time_zone', tweet.user.time_zone)
115
- record.store('user_lang', tweet.user.lang)
101
+ when :simple
102
+ record = {}
103
+ record['message'] = tweet.text.scrub('')
104
+ record['geo'] = tweet.geo
105
+ record['place'] = tweet.place
106
+ record['created_at'] = tweet.created_at
107
+ record['user_name'] = tweet.user.name
108
+ record['user_screen_name'] = tweet.user.screen_name
109
+ record['user_profile_image_url'] = tweet.user.profile_image_url
110
+ record['user_time_zone'] = tweet.user.time_zone
111
+ record['user_lang'] = tweet.user.lang
116
112
  end
117
- router.emit(@tag, Engine.now, record)
113
+ router.emit(@tag, Fluent::Engine.now, record)
118
114
  end
119
115
 
120
116
  def hash_flatten(record, prefix = nil)
@@ -133,9 +129,9 @@ module Fluent
133
129
  def hash_key_to_s(hash)
134
130
  newhash = {}
135
131
  hash.each do |k, v|
136
- if v.instance_of?(Hash) then
132
+ if v.instance_of?(Hash)
137
133
  newhash[k.to_s] = hash_key_to_s(v)
138
- elsif v.instance_of?(Array) then
134
+ elsif v.instance_of?(Array)
139
135
  newhash[k.to_s] = array_key_to_s(v)
140
136
  elsif v.instance_of?(String)
141
137
  newhash[k.to_s] = v.scrub('')
@@ -148,11 +144,11 @@ module Fluent
148
144
 
149
145
  def array_key_to_s(array)
150
146
  array.map do |v|
151
- if v.instance_of?(Hash) then
147
+ if v.instance_of?(Hash)
152
148
  hash_key_to_s(v)
153
- elsif v.instance_of?(Array) then
149
+ elsif v.instance_of?(Array)
154
150
  array_key_to_s(v)
155
- elsif v.instance_of?(String) then
151
+ elsif v.instance_of?(String)
156
152
  v.scrub('')
157
153
  else
158
154
  v
@@ -161,12 +157,3 @@ module Fluent
161
157
  end
162
158
  end
163
159
  end
164
-
165
- # TODO: Remove this monkey patch after release new version of twitter gem
166
- #
167
- # See: https://github.com/sferik/twitter/pull/815
168
- class Twitter::NullObject
169
- def to_json(*args)
170
- nil.to_json(*args)
171
- end
172
- end
@@ -1,51 +1,40 @@
1
- require "fluent/output"
1
+ require "twitter"
2
+ require "fluent/plugin/output"
2
3
 
3
- class Fluent::TwitterOutput < Fluent::Output
4
+ class Fluent::Plugin::TwitterOutput < Fluent::Plugin::Output
4
5
  Fluent::Plugin.register_output('twitter', self)
5
6
 
6
- config_param :consumer_key, :string, :secret => true
7
- config_param :consumer_secret, :string, :secret => true
8
- config_param :oauth_token, :string, :default => nil, :secret => true
9
- config_param :oauth_token_secret, :string, :default => nil, :secret => true
10
- config_param :access_token, :string, :default => nil, :secret => true
11
- config_param :access_token_secret, :string, :default => nil, :secret => true
7
+ config_param :consumer_key, :string, secret: true
8
+ config_param :consumer_secret, :string, secret: true
9
+ config_param :access_token, :string, secret: true
10
+ config_param :access_token_secret, :string, secret: true
12
11
 
13
12
  def initialize
14
13
  super
15
- require 'twitter'
16
14
  end
17
15
 
18
16
  def configure(conf)
19
17
  super
20
18
 
21
- @access_token = @access_token || @oauth_token
22
- @access_token_secret = @access_token_secret || @oauth_token_secret
23
- if !@consumer_key or !@consumer_secret or !@access_token or !@access_token_secret
24
- raise Fluent::ConfigError, "missing values in consumer_key or consumer_secret or oauth_token or oauth_token_secret"
25
- end
26
-
27
19
  @twitter = Twitter::REST::Client.new(
28
- :consumer_key => @consumer_key,
29
- :consumer_secret => @consumer_secret,
30
- :access_token => @access_token,
31
- :access_token_secret => @access_token_secret
20
+ consumer_key: @consumer_key,
21
+ consumer_secret: @consumer_secret,
22
+ access_token: @access_token,
23
+ access_token_secret: @access_token_secret
32
24
  )
33
25
  end
34
26
 
35
- def emit(tag, es, chain)
36
- es.each do |time,record|
27
+ def process(tag, es)
28
+ es.each do |_time, record|
37
29
  tweet(record['message'])
38
30
  end
39
-
40
- chain.next
41
31
  end
42
32
 
43
33
  def tweet(message)
44
34
  begin
45
35
  @twitter.update(message)
46
36
  rescue Twitter::Error => e
47
- $log.error("Twitter Error: #{e.message}")
37
+ log.error("Twitter Error: #{e.message}")
48
38
  end
49
39
  end
50
40
  end
51
-
@@ -1,21 +1,6 @@
1
1
  require 'bundler/setup'
2
2
  require 'test/unit'
3
3
 
4
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
5
- $LOAD_PATH.unshift(File.dirname(__FILE__))
4
+ $LOAD_PATH.unshift(File.join(__dir__, '..', 'lib'))
5
+ $LOAD_PATH.unshift(__dir__)
6
6
  require 'fluent/test'
7
- unless ENV.has_key?('VERBOSE')
8
- nulllogger = Object.new
9
- nulllogger.instance_eval {|obj|
10
- def method_missing(method, *args)
11
- # pass
12
- end
13
- }
14
- $log = nulllogger
15
- end
16
-
17
- require 'fluent/plugin/out_twitter'
18
- require 'fluent/plugin/in_twitter'
19
-
20
- class Test::Unit::TestCase
21
- end
@@ -1,4 +1,6 @@
1
1
  require 'helper'
2
+ require 'fluent/plugin/in_twitter'
3
+ require 'fluent/test/driver/input'
2
4
 
3
5
  class TwitterInputTest < Test::Unit::TestCase
4
6
  def setup
@@ -14,47 +16,57 @@ class TwitterInputTest < Test::Unit::TestCase
14
16
  timeline sampling
15
17
  ]
16
18
 
17
- def create_driver(conf=CONFIG,tag='test',use_v1=false)
18
- Fluent::Test::OutputTestDriver.new(Fluent::TwitterInput, tag).configure(conf,use_v1)
19
+ def create_driver(conf = CONFIG, syntax: :v1)
20
+ Fluent::Test::Driver::Input.new(Fluent::Plugin::TwitterInput).configure(conf, syntax: syntax)
19
21
  end
20
22
 
21
- def test_configure
22
- assert_raise(Fluent::ConfigError) {
23
- d = create_driver('')
24
- }
25
- d = create_driver %[
26
- consumer_key CONSUMER_KEY
27
- consumer_secret CONSUMER_SECRET
28
- access_token ACCESS_TOKEN
29
- access_token_secret ACCESS_TOKEN_SECRET
30
- tag input.twitter
31
- timeline tracking
32
- keyword ${hashtag}fluentd,fluentd lang:ja
33
- ]
34
- assert_equal 'CONSUMER_KEY', d.instance.consumer_key
35
- assert_equal 'CONSUMER_SECRET', d.instance.consumer_secret
36
- assert_equal 'ACCESS_TOKEN', d.instance.access_token
37
- assert_equal 'ACCESS_TOKEN_SECRET', d.instance.access_token_secret
38
- assert_equal '#fluentd,fluentd lang:ja', d.instance.keyword
23
+ sub_test_case "v0 syntax" do
24
+ def test_empty
25
+ assert_raise(Fluent::ConfigError) {
26
+ create_driver('', syntax: :v0)
27
+ }
28
+ end
29
+
30
+ def test_configure
31
+ d = create_driver %[
32
+ consumer_key CONSUMER_KEY
33
+ consumer_secret CONSUMER_SECRET
34
+ access_token ACCESS_TOKEN
35
+ access_token_secret ACCESS_TOKEN_SECRET
36
+ tag input.twitter
37
+ timeline tracking
38
+ keyword ${hashtag}fluentd,fluentd lang:ja
39
+ ]
40
+ assert_equal 'CONSUMER_KEY', d.instance.consumer_key
41
+ assert_equal 'CONSUMER_SECRET', d.instance.consumer_secret
42
+ assert_equal 'ACCESS_TOKEN', d.instance.access_token
43
+ assert_equal 'ACCESS_TOKEN_SECRET', d.instance.access_token_secret
44
+ assert_equal '#fluentd,fluentd lang:ja', d.instance.keyword
45
+ end
39
46
  end
40
47
 
41
- def test_v1_multi_keyword
42
- assert_raise(Fluent::ConfigError) {
43
- d = create_driver('', 'test', true)
44
- }
45
- d = create_driver(%[
46
- consumer_key CONSUMER_KEY
47
- consumer_secret CONSUMER_SECRET
48
- access_token ACCESS_TOKEN
49
- access_token_secret ACCESS_TOKEN_SECRET
50
- tag input.twitter
51
- timeline tracking
52
- keyword 'treasuredata,treasure data,#treasuredata,fluentd,#fluentd'
53
- ], 'test', true)
54
- assert_equal 'CONSUMER_KEY', d.instance.consumer_key
55
- assert_equal 'CONSUMER_SECRET', d.instance.consumer_secret
56
- assert_equal 'ACCESS_TOKEN', d.instance.access_token
57
- assert_equal 'ACCESS_TOKEN_SECRET', d.instance.access_token_secret
58
- assert_equal 'treasuredata,treasure data,#treasuredata,fluentd,#fluentd', d.instance.keyword
48
+ sub_test_case "v1 syntax" do
49
+ def test_empty
50
+ assert_raise(Fluent::ConfigError) {
51
+ create_driver('')
52
+ }
53
+ end
54
+
55
+ def test_multi_keyword
56
+ d = create_driver(%[
57
+ consumer_key CONSUMER_KEY
58
+ consumer_secret CONSUMER_SECRET
59
+ access_token ACCESS_TOKEN
60
+ access_token_secret ACCESS_TOKEN_SECRET
61
+ tag input.twitter
62
+ timeline tracking
63
+ keyword 'treasuredata,treasure data,#treasuredata,fluentd,#fluentd'
64
+ ])
65
+ assert_equal 'CONSUMER_KEY', d.instance.consumer_key
66
+ assert_equal 'CONSUMER_SECRET', d.instance.consumer_secret
67
+ assert_equal 'ACCESS_TOKEN', d.instance.access_token
68
+ assert_equal 'ACCESS_TOKEN_SECRET', d.instance.access_token_secret
69
+ assert_equal 'treasuredata,treasure data,#treasuredata,fluentd,#fluentd', d.instance.keyword
70
+ end
59
71
  end
60
72
  end
@@ -1,4 +1,6 @@
1
1
  require 'helper'
2
+ require 'fluent/test/driver/output'
3
+ require 'fluent/plugin/out_twitter'
2
4
 
3
5
  class TwitterOutputTest < Test::Unit::TestCase
4
6
  def setup
@@ -12,37 +14,28 @@ class TwitterOutputTest < Test::Unit::TestCase
12
14
  access_token_secret ACCESS_TOKEN_SECRET
13
15
  ]
14
16
 
15
- def create_driver(conf=CONFIG,tag='test')
16
- Fluent::Test::OutputTestDriver.new(Fluent::TwitterOutput, tag).configure(conf)
17
+ def create_driver(conf = CONFIG)
18
+ Fluent::Test::Driver::Output.new(Fluent::Plugin::TwitterOutput).configure(conf)
17
19
  end
18
20
 
19
- def test_configure
20
- assert_raise(Fluent::ConfigError) {
21
- d = create_driver('')
22
- }
23
- d = create_driver %[
24
- consumer_key CONSUMER_KEY
25
- consumer_secret CONSUMER_SECRET
26
- access_token ACCESS_TOKEN
27
- access_token_secret ACCESS_TOKEN_SECRET
28
- ]
29
- assert_equal 'CONSUMER_KEY', d.instance.consumer_key
30
- assert_equal 'CONSUMER_SECRET', d.instance.consumer_secret
31
- assert_equal 'ACCESS_TOKEN', d.instance.access_token
32
- assert_equal 'ACCESS_TOKEN_SECRET', d.instance.access_token_secret
33
- end
21
+ sub_test_case "configure" do
22
+ def test_empty
23
+ assert_raise(Fluent::ConfigError) {
24
+ create_driver('')
25
+ }
26
+ end
34
27
 
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
28
+ def test_configure
29
+ d = create_driver %[
30
+ consumer_key CONSUMER_KEY
31
+ consumer_secret CONSUMER_SECRET
32
+ access_token ACCESS_TOKEN
33
+ access_token_secret ACCESS_TOKEN_SECRET
34
+ ]
35
+ assert_equal 'CONSUMER_KEY', d.instance.consumer_key
36
+ assert_equal 'CONSUMER_SECRET', d.instance.consumer_secret
37
+ assert_equal 'ACCESS_TOKEN', d.instance.access_token
38
+ assert_equal 'ACCESS_TOKEN_SECRET', d.instance.access_token_secret
39
+ end
46
40
  end
47
41
  end
48
-
metadata CHANGED
@@ -1,124 +1,91 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-twitter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
5
- prerelease:
4
+ version: 0.6.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Kentaro Yoshida
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2017-02-27 00:00:00.000000000 Z
11
+ date: 2017-04-03 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: test-unit
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: 3.1.0
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: 3.1.0
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: appraisal
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: fluentd
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - ">="
68
60
  - !ruby/object:Gem::Version
69
- version: 0.10.46
70
- - - <
61
+ version: 0.14.0
62
+ - - "<"
71
63
  - !ruby/object:Gem::Version
72
64
  version: '2'
73
65
  type: :runtime
74
66
  prerelease: false
75
67
  version_requirements: !ruby/object:Gem::Requirement
76
- none: false
77
68
  requirements:
78
- - - ! '>='
69
+ - - ">="
79
70
  - !ruby/object:Gem::Version
80
- version: 0.10.46
81
- - - <
71
+ version: 0.14.0
72
+ - - "<"
82
73
  - !ruby/object:Gem::Version
83
74
  version: '2'
84
75
  - !ruby/object:Gem::Dependency
85
76
  name: twitter
86
77
  requirement: !ruby/object:Gem::Requirement
87
- none: false
88
78
  requirements:
89
- - - ~>
79
+ - - "~>"
90
80
  - !ruby/object:Gem::Version
91
- version: '5.0'
81
+ version: '6.0'
92
82
  type: :runtime
93
83
  prerelease: false
94
84
  version_requirements: !ruby/object:Gem::Requirement
95
- none: false
96
85
  requirements:
97
- - - ~>
86
+ - - "~>"
98
87
  - !ruby/object:Gem::Version
99
- version: '5.0'
100
- - !ruby/object:Gem::Dependency
101
- name: string-scrub
102
- requirement: !ruby/object:Gem::Requirement
103
- none: false
104
- requirements:
105
- - - ! '>='
106
- - !ruby/object:Gem::Version
107
- version: 0.0.3
108
- - - <=
109
- - !ruby/object:Gem::Version
110
- version: 0.0.5
111
- type: :runtime
112
- prerelease: false
113
- version_requirements: !ruby/object:Gem::Requirement
114
- none: false
115
- requirements:
116
- - - ! '>='
117
- - !ruby/object:Gem::Version
118
- version: 0.0.3
119
- - - <=
120
- - !ruby/object:Gem::Version
121
- version: 0.0.5
88
+ version: '6.0'
122
89
  description:
123
90
  email:
124
91
  - y.ken.studio@gmail.com
@@ -126,16 +93,14 @@ executables: []
126
93
  extensions: []
127
94
  extra_rdoc_files: []
128
95
  files:
129
- - .gitignore
130
- - .travis.yml
96
+ - ".gitignore"
97
+ - ".travis.yml"
131
98
  - Appraisals
132
99
  - Gemfile
133
100
  - LICENSE.txt
134
101
  - README.md
135
102
  - Rakefile
136
103
  - fluent-plugin-twitter.gemspec
137
- - gemfiles/fluentd_v0.10.gemfile
138
- - gemfiles/fluentd_v0.12.gemfile
139
104
  - gemfiles/fluentd_v0.14.gemfile
140
105
  - lib/fluent/plugin/in_twitter.rb
141
106
  - lib/fluent/plugin/out_twitter.rb
@@ -145,27 +110,26 @@ files:
145
110
  homepage: https://github.com/y-ken/fluent-plugin-twitter
146
111
  licenses:
147
112
  - Apache-2.0
113
+ metadata: {}
148
114
  post_install_message:
149
115
  rdoc_options: []
150
116
  require_paths:
151
117
  - lib
152
118
  required_ruby_version: !ruby/object:Gem::Requirement
153
- none: false
154
119
  requirements:
155
- - - ! '>='
120
+ - - ">"
156
121
  - !ruby/object:Gem::Version
157
- version: '0'
122
+ version: '2.1'
158
123
  required_rubygems_version: !ruby/object:Gem::Requirement
159
- none: false
160
124
  requirements:
161
- - - ! '>='
125
+ - - ">="
162
126
  - !ruby/object:Gem::Version
163
127
  version: '0'
164
128
  requirements: []
165
129
  rubyforge_project:
166
- rubygems_version: 1.8.23
130
+ rubygems_version: 2.2.5
167
131
  signing_key:
168
- specification_version: 3
132
+ specification_version: 4
169
133
  summary: Fluentd Input/Output plugin to collect/process tweets with Twitter Streaming
170
134
  API.
171
135
  test_files:
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "http://rubygems.org"
4
-
5
- gem "fluentd", "~> 0.10.46"
6
-
7
- gemspec :path => "../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "http://rubygems.org"
4
-
5
- gem "fluentd", "~> 0.12.0"
6
-
7
- gemspec :path => "../"