fluent-plugin-sakuraio 0.1.2 → 0.1.3

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.
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