fluent-plugin-sakuraio 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5e9d59261a7e3f994e9f1f71e8dc15b1daf306cc
4
- data.tar.gz: 829c7511c98f93f3de30a98f44a97afd05b28cd7
2
+ SHA256:
3
+ metadata.gz: 5e4048610939f4ee51631219d5f0e08a43c4d66a339e5527a6f6fdcdcedc0ad2
4
+ data.tar.gz: 4cd1c9fb745886a0927276c88068f7252e25ae254fdab3dcfd5c040b79ebcf47
5
5
  SHA512:
6
- metadata.gz: 30b2729b21454594fb0de8a06929b10d89b337f1e6b75766cb55e308e76d8d91f7814021983ab6f77681792e68664e23cae2346145ba28c0eebaa0ecba3c7199
7
- data.tar.gz: 9e0b1a3e6dc1e49ff38e518a7683c7a251feadd69363c03bec10023707ea61f579665e7bacdeff3996f6e3d0ee239671d53e5913a32138d056bf1c3f4dbeb757
6
+ metadata.gz: a3e10d9c21538474d6b6a57cf6a729b874b796c23a7c9f1e260f213c64da43d196e7a87d08fe89d455388399267348802419840e151e54be00656a4b7fcf7f6a
7
+ data.tar.gz: 5c00a268963655a5508f62bc162c76e320d2dc465ebc0b4886f5e28daac09bbc5421199378ca70136b11452e33b455a1e1506badee6a35adb869629b7a3b3ee7
@@ -0,0 +1,25 @@
1
+ require:
2
+ - rubocop-performance
3
+
4
+ AllCops:
5
+ TargetRubyVersion: 2.3
6
+
7
+ Layout/LineLength:
8
+ Enabled: false
9
+
10
+ Style/ClassAndModuleChildren:
11
+ Enabled: false
12
+
13
+ Style/Documentation:
14
+ Enabled: false
15
+
16
+ Metrics/BlockLength:
17
+ Exclude:
18
+ - 'test/**/*'
19
+ - '*.gemspec'
20
+
21
+ Metrics/ClassLength:
22
+ Max: 200
23
+
24
+ Metrics/MethodLength:
25
+ Max: 20
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in fluent-plugin-sakuraio.gemspec
data/Rakefile CHANGED
@@ -1,5 +1,7 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rake/testtask'
3
5
 
4
6
  Rake::TestTask.new(:test) do |test|
5
7
  test.libs << 'lib' << 'test'
@@ -7,4 +9,4 @@ Rake::TestTask.new(:test) do |test|
7
9
  test.verbose = true
8
10
  end
9
11
 
10
- task :default => :test
12
+ task default: :test
@@ -1,10 +1,11 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
 
5
6
  Gem::Specification.new do |spec|
6
7
  spec.name = 'fluent-plugin-sakuraio'
7
- spec.version = '0.1.2'
8
+ spec.version = '0.1.3'
8
9
  spec.authors = ['Yuya Kusakabe']
9
10
  spec.email = ['yuya.kusakabe@gmail.com']
10
11
 
@@ -20,15 +21,17 @@ Gem::Specification.new do |spec|
20
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
22
  spec.require_paths = ['lib']
22
23
 
23
- spec.required_ruby_version = '>= 2.1'
24
+ spec.required_ruby_version = '>= 2.3'
24
25
 
25
26
  spec.add_runtime_dependency 'eventmachine'
26
27
  spec.add_runtime_dependency 'faye-websocket'
27
28
  spec.add_runtime_dependency 'fluentd', '>= 0.14', '< 2'
28
29
  spec.add_runtime_dependency 'yajl-ruby'
29
- spec.add_development_dependency 'bundler', '~> 1.13'
30
- spec.add_development_dependency 'rake', '~> 10.0'
31
- spec.add_development_dependency 'test-unit'
30
+ spec.add_development_dependency 'bundler'
32
31
  spec.add_development_dependency 'rack'
32
+ spec.add_development_dependency 'rake'
33
+ spec.add_development_dependency 'rubocop'
34
+ spec.add_development_dependency 'rubocop-performance'
35
+ spec.add_development_dependency 'test-unit'
33
36
  spec.add_development_dependency 'thin'
34
37
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fluent/plugin/input'
2
4
  require 'yajl'
3
5
  require 'faye/websocket'
@@ -26,6 +28,7 @@ module Fluent::Plugin
26
28
 
27
29
  def ensure_reactor_running
28
30
  return if EM.reactor_running?
31
+
29
32
  thread_create(:in_sakuraio_reactor) do
30
33
  EM.run
31
34
  end
@@ -45,13 +48,7 @@ module Fluent::Plugin
45
48
  end
46
49
 
47
50
  client.on :message do |event|
48
- log.debug "sakuraio: received message #{event.data}"
49
- records = parse(event.data)
50
- unless records.empty?
51
- records.each do |r|
52
- router.emit(r['tag'], r['time'], r['record'])
53
- end
54
- end
51
+ handle_message(event)
55
52
  end
56
53
 
57
54
  client.on :error do |event|
@@ -64,16 +61,26 @@ module Fluent::Plugin
64
61
  end
65
62
  end
66
63
 
64
+ def handle_message(event)
65
+ log.debug "sakuraio: received message #{event.data}"
66
+ records = parse(event.data)
67
+ return if records.empty?
68
+
69
+ records.each do |r|
70
+ router.emit(r['tag'], r['time'], r['record'])
71
+ end
72
+ end
73
+
67
74
  def parse(text)
68
75
  parser = Yajl::Parser.new
69
76
  j = parser.parse(text)
70
77
  records = []
71
78
  case j['type']
72
- when 'connection' then
79
+ when 'connection'
73
80
  parse_connection(records, j)
74
- when 'location' then
81
+ when 'location'
75
82
  parse_location(records, j)
76
- when 'channels' then
83
+ when 'channels'
77
84
  parse_channels(records, j)
78
85
  else
79
86
  log.debug "unknown type: #{j['type']}: #{text}"
@@ -81,54 +88,57 @@ module Fluent::Plugin
81
88
  records
82
89
  end
83
90
 
84
- def parse_connection(records, j)
91
+ def parse_connection(records, data)
85
92
  record = {
86
- 'tag' => j['module'] + '.connection',
93
+ 'tag' => data['module'] + '.connection',
87
94
  'record' => {
88
- 'module' => j['module'],
89
- 'is_online' => j['payload']['is_online']
95
+ 'module' => data['module'],
96
+ 'is_online' => data['payload']['is_online']
90
97
  },
91
- 'time' => @time_parser.parse(j['datetime'])
98
+ 'time' => @time_parser.parse(data['datetime'])
92
99
  }
93
100
  records.push(record)
94
101
  records
95
102
  end
96
103
 
97
- def parse_location(records, j)
98
- c = j['payload']['coordinate']
104
+ def parse_location(records, data)
105
+ c = data['payload']['coordinate']
99
106
  if c != 'null'
100
107
  record = {
101
- 'tag' => j['module'] + '.location',
108
+ 'tag' => data['module'] + '.location',
102
109
  'record' => {
103
- 'module' => j['module'],
110
+ 'module' => data['module'],
104
111
  'latitude' => c['latitude'],
105
112
  'longitude' => c['longitude'],
106
113
  'range_m' => c['range_m']
107
114
  },
108
- 'time' => @time_parser.parse(j['datetime'])
115
+ 'time' => @time_parser.parse(data['datetime'])
109
116
  }
110
117
  records.push(record)
111
118
  end
112
119
  records
113
120
  end
114
121
 
115
- def parse_channels(records, j)
116
- message_time = @time_parser.parse(j['datetime'])
117
- tag = j['module']
118
- j['payload']['channels'].each do |c|
119
- record = {
120
- 'tag' => tag + '.channels.' + c['channel'].to_s,
121
- 'record' => {
122
- 'module' => j['module'],
123
- 'channel' => c['channel'],
124
- 'type' => c['type'],
125
- 'value' => c['value']
126
- },
127
- 'time' => @time_parser.parse(c['datetime']) || message_time
128
- }
129
- records.push(record)
122
+ def parse_channels(records, data)
123
+ msg_time = @time_parser.parse(data['datetime'])
124
+ mod = data['module']
125
+ data['payload']['channels'].each do |c|
126
+ records.push(parse_channel(mod, msg_time, c))
130
127
  end
131
128
  records
132
129
  end
130
+
131
+ def parse_channel(mod, msg_time, chan)
132
+ {
133
+ 'tag' => mod + '.channels.' + chan['channel'].to_s,
134
+ 'record' => {
135
+ 'module' => mod,
136
+ 'channel' => chan['channel'],
137
+ 'type' => chan['type'],
138
+ 'value' => chan['value']
139
+ },
140
+ 'time' => @time_parser.parse(chan['datetime']) || msg_time
141
+ }
142
+ end
133
143
  end
134
144
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fluent/plugin/output'
2
4
  require 'yajl'
3
5
  require 'faye/websocket'
@@ -20,12 +22,13 @@ module Fluent::Plugin
20
22
 
21
23
  def ensure_reactor_running
22
24
  return if EM.reactor_running?
25
+
23
26
  thread_create(:out_sakuraio_reactor) do
24
27
  EM.run
25
28
  end
26
29
  end
27
30
 
28
- def run()
31
+ def run
29
32
  @client = Faye::WebSocket::Client.new(@url)
30
33
  EM.next_tick do
31
34
  @client.on :open do
@@ -46,8 +49,8 @@ module Fluent::Plugin
46
49
  end
47
50
  end
48
51
 
49
- def process(_tag, es)
50
- es.each do |_time, record|
52
+ def process(_tag, events)
53
+ events.each do |_time, record|
51
54
  log.debug "sakuraio: process record #{record}"
52
55
  modules.each do |m|
53
56
  s = encode_record(m, record)
@@ -57,7 +60,7 @@ module Fluent::Plugin
57
60
  end
58
61
  end
59
62
 
60
- def encode_record(m, record)
63
+ def encode_record(mod, record)
61
64
  data = []
62
65
  @channels.each do |ch, v|
63
66
  key, type = v
@@ -66,7 +69,7 @@ module Fluent::Plugin
66
69
  'value' => record[key])
67
70
  end
68
71
  hash = { 'type' => 'channels',
69
- 'module' => m,
72
+ 'module' => mod,
70
73
  'payload' => { 'channels' => data } }
71
74
  Yajl::Encoder.encode(hash)
72
75
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-sakuraio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuya Kusakabe
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-04 00:00:00.000000000 Z
11
+ date: 2020-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eventmachine
@@ -76,32 +76,60 @@ dependencies:
76
76
  name: bundler
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: '1.13'
81
+ version: '0'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: '1.13'
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: rack
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
89
103
  - !ruby/object:Gem::Dependency
90
104
  name: rake
91
105
  requirement: !ruby/object:Gem::Requirement
92
106
  requirements:
93
- - - "~>"
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: rubocop
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
94
122
  - !ruby/object:Gem::Version
95
- version: '10.0'
123
+ version: '0'
96
124
  type: :development
97
125
  prerelease: false
98
126
  version_requirements: !ruby/object:Gem::Requirement
99
127
  requirements:
100
- - - "~>"
128
+ - - ">="
101
129
  - !ruby/object:Gem::Version
102
- version: '10.0'
130
+ version: '0'
103
131
  - !ruby/object:Gem::Dependency
104
- name: test-unit
132
+ name: rubocop-performance
105
133
  requirement: !ruby/object:Gem::Requirement
106
134
  requirements:
107
135
  - - ">="
@@ -115,7 +143,7 @@ dependencies:
115
143
  - !ruby/object:Gem::Version
116
144
  version: '0'
117
145
  - !ruby/object:Gem::Dependency
118
- name: rack
146
+ name: test-unit
119
147
  requirement: !ruby/object:Gem::Requirement
120
148
  requirements:
121
149
  - - ">="
@@ -150,6 +178,7 @@ extensions: []
150
178
  extra_rdoc_files: []
151
179
  files:
152
180
  - ".gitignore"
181
+ - ".rubocop.yml"
153
182
  - ".travis.yml"
154
183
  - CHANGELOG.md
155
184
  - Gemfile
@@ -171,7 +200,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
171
200
  requirements:
172
201
  - - ">="
173
202
  - !ruby/object:Gem::Version
174
- version: '2.1'
203
+ version: '2.3'
175
204
  required_rubygems_version: !ruby/object:Gem::Requirement
176
205
  requirements:
177
206
  - - ">="
@@ -179,7 +208,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
208
  version: '0'
180
209
  requirements: []
181
210
  rubyforge_project:
182
- rubygems_version: 2.5.2
211
+ rubygems_version: 2.7.6.2
183
212
  signing_key:
184
213
  specification_version: 4
185
214
  summary: fluentd plugin for sakura.io