fluent-plugin-idobata 0.0.0 → 0.0.1

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
2
  SHA1:
3
- metadata.gz: 42d3ed691d22f8b2a08724ef7bbe4826a032508e
4
- data.tar.gz: a25294b6419d2fd2af220855b3a31800271653d2
3
+ metadata.gz: db215c376fba35b2a596e0ab4ed9c247ff62b3db
4
+ data.tar.gz: 8613df1e1d57910f45ac478ee8846aa6c1e9e414
5
5
  SHA512:
6
- metadata.gz: c25ac168924ef45fc2ad532cc3323fbbd85cb5b82dc847ff92279027d0bf052384320c5077b747a615b69f3cc3f1ed582adf9eed5da9e24b8a6dc602501e436b
7
- data.tar.gz: 89e886eba67c14bfd9a0605155feaada19c204cba76acb34e9f259ca247557d12c0a5038381d2c2f5c13dee911d9f6a552e8814143a920cc11cc1a3af40b0d12
6
+ metadata.gz: ed4df2fa7e27ca10ab3720de6805ca4a1bc2bacb9d34eddd7bdc7ac809dc5228080ab5cd6e931735d0fe0ae780eb55b5fe8bf137e2f81c19b1b79fd5ca1a6bfb
7
+ data.tar.gz: fca15a8f77aef22ff0c5c84b93b29049991253bee5d3d188b16fe1d56017fe98671647278336faf23d805b9fbde04738382705c4e36c973b6ab956b01205a75f
data/README.md CHANGED
@@ -25,6 +25,8 @@ see: https://idobata.io
25
25
  - message_template
26
26
  - You can use erb notation
27
27
  - send message to idobata
28
+ - (optional)post_interval
29
+ - Internal of post to idobata
28
30
 
29
31
  #### example
30
32
 
@@ -43,3 +45,4 @@ send 'field1 is 300 !' message to your idobata room
43
45
  ## releases
44
46
 
45
47
  - 2013/10/09 0.0.0 1st release
48
+ - 2014/01/21 0.0.1 Support post interval
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "fluent-plugin-idobata"
7
- spec.version = '0.0.0'
7
+ spec.version = '0.0.1'
8
8
  spec.authors = ["bash0C7"]
9
9
  spec.email = ["koshiba+github@4038nullpointer.com"]
10
10
  spec.description = "Fluentd output plugin to send data to idobata"
@@ -1,5 +1,6 @@
1
1
  require 'httparty'
2
2
  require 'erb'
3
+ require 'ostruct'
3
4
 
4
5
  module Fluent
5
6
  class Fluent::IdobataOutput < Fluent::Output
@@ -11,29 +12,59 @@ module Fluent
11
12
 
12
13
  config_param :webhook_url, :string
13
14
  config_param :message_template, :string
15
+ config_param :post_interval, :integer, :default => 1
14
16
 
15
17
  def configure(conf)
16
18
  super
17
19
 
18
20
  @erb = ERB.new(@message_template)
21
+ @q = Queue.new
19
22
  end
20
23
 
21
24
  def start
22
25
  super
23
26
 
27
+ @thread = Thread.new(&method(:post))
28
+ rescue
29
+ $log.warn "raises exception: #{$!.class}, '#{$!.message}"
24
30
  end
25
31
 
26
32
  def shutdown
27
33
  super
28
34
 
35
+ Thread.kill(@thread)
29
36
  end
30
37
 
31
38
  def emit(tag, es, chain)
32
- es.each {|time,record|
33
- HTTParty.post(@webhook_url, :body => "body=#{@erb.result(binding)}")
39
+ es.each {|time, record|
40
+ param = OpenStruct.new
41
+ param.tag = tag
42
+ param.time = time
43
+ param.record = record
44
+
45
+ @q.push param
34
46
  }
35
47
 
36
48
  chain.next
37
49
  end
50
+
51
+ private
52
+
53
+ def post
54
+ loop do
55
+ param = @q.pop
56
+ tag = param.tag
57
+ time = param.time
58
+ record = param.record
59
+
60
+ begin
61
+ HTTParty.post(@webhook_url, :body => "body=#{@erb.result(binding)}")
62
+ sleep(@post_interval)
63
+ rescue
64
+ $log.warn "raises exception: #{$!.class}, '#{$!.message}, #{param}'"
65
+ end
66
+ end
67
+ end
68
+
38
69
  end
39
70
  end
@@ -25,12 +25,17 @@ describe do
25
25
  end
26
26
 
27
27
  describe 'emit' do
28
- let(:record) {{ 'field1' => 50, 'otherfield' => 99}}
28
+ let(:record1) {{ 'field1' => 50, 'otherfield' => 99}}
29
+ let(:record2) {{ 'field1' => 150, 'otherfield' => 199}}
29
30
  let(:time) {0}
30
31
  let(:posted) {
31
32
  d = driver
33
+
32
34
  mock(HTTParty).post('https://idobata/web_hook/url', :body => 'body=field1 value: 50')
33
- d.emit(record, Time.at(time))
35
+ mock(HTTParty).post('https://idobata/web_hook/url', :body => 'body=field1 value: 150')
36
+
37
+ d.emit(record1, Time.at(time))
38
+ d.emit(record2, Time.at(time))
34
39
  d.run
35
40
  }
36
41
 
@@ -39,6 +44,7 @@ describe do
39
44
  %[
40
45
  webhook_url https://idobata/web_hook/url
41
46
  message_template field1 value: <%= record["field1"] %>
47
+ post_interval 0
42
48
  ]
43
49
  }
44
50
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-idobata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - bash0C7
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-08 00:00:00.000000000 Z
11
+ date: 2014-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd