fluent-plugin-out-http 1.0.0 → 1.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3fd85f5885dad181862a83638f8bb88f67f896abb63f705f6e7c9c128318feac
4
- data.tar.gz: d10e356dd5f510b085385ac52034d43ba3a92fc457549fc719a0305da298096f
3
+ metadata.gz: dafd3484539763a106d90e6bb4acf4ca7877a3734a0a256bfa5b614e0de16a15
4
+ data.tar.gz: a1fc0b58b3d6adcb44c686715030710e2d96b188842eeb61e8f3eb0b9746b18a
5
5
  SHA512:
6
- metadata.gz: f47578551ada94db75b72156cd0c1e96fbad70225e715eca3ed63ad1d34123b2e870fdfe47c11d6c5a7b0605a81c8e820ce78748fac6c6bb0a32f775ded3664e
7
- data.tar.gz: 8ef5a6c31b36978efdef707c6064772c4d2151b87b576766698ae07e522ec645a7a683b455363658f2e36c43c2fce2ba4fd0bb624e236c389ec7e4d7fdc77a08
6
+ metadata.gz: 6f91c5e5737673625a691920e751e2e9e85e7b06aefbd2cddca85de54cdc19b01168ccbf746001b35a90cfeaa384cd7d5768f7e680bb4e0fa02c703131bb5374
7
+ data.tar.gz: 1943958c63b8e7feb8f2c43a78875bb672eb33e38677328c9d268014a250ef5bab9c1180edfec892d0e278d2fd8cef54055525f2f59b5d2212b335b0e167cfad
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = "fluent-plugin-out-http"
5
- gem.version = "1.0.0"
5
+ gem.version = "1.0.1"
6
6
  gem.authors = ["Marica Odagaki"]
7
7
  gem.email = ["ento.entotto@gmail.com"]
8
8
  gem.summary = %q{A generic Fluentd output plugin to send logs to an HTTP endpoint}
@@ -21,10 +21,10 @@ class Fluent::Plugin::HTTPOutput < Fluent::Plugin::Output
21
21
  config_param :ssl_no_verify, :bool, :default => false
22
22
 
23
23
  # HTTP method
24
- config_param :http_method, :string, :default => :post
24
+ config_param :http_method, :enum, list: [:get, :put, :post, :delete], :default => :post
25
25
 
26
26
  # form | json
27
- config_param :serializer, :string, :default => :form
27
+ config_param :serializer, :enum, list: [:json, :form], :default => :form
28
28
 
29
29
  # Simple rate limiting: ignore any records within `rate_limit_msec`
30
30
  # since the last one.
@@ -33,8 +33,8 @@ class Fluent::Plugin::HTTPOutput < Fluent::Plugin::Output
33
33
  # Raise errors that were rescued during HTTP requests?
34
34
  config_param :raise_on_error, :bool, :default => true
35
35
 
36
- # nil | 'none' | 'basic'
37
- config_param :authentication, :string, :default => nil
36
+ # 'none' | 'basic'
37
+ config_param :authentication, :enum, list: [:none, :basic], :default => :none
38
38
  config_param :username, :string, :default => ''
39
39
  config_param :password, :string, :default => '', :secret => true
40
40
  # Switch non-buffered/buffered plugin
@@ -55,26 +55,6 @@ class Fluent::Plugin::HTTPOutput < Fluent::Plugin::Output
55
55
  OpenSSL::SSL::VERIFY_PEER
56
56
  end
57
57
 
58
- serializers = [:json, :form]
59
- @serializer = if serializers.include? @serializer.intern
60
- @serializer.intern
61
- else
62
- :form
63
- end
64
-
65
- http_methods = [:get, :put, :post, :delete]
66
- @http_method = if http_methods.include? @http_method.intern
67
- @http_method.intern
68
- else
69
- :post
70
- end
71
-
72
- @auth = case @authentication
73
- when 'basic' then :basic
74
- else
75
- :none
76
- end
77
-
78
58
  @last_request_time = nil
79
59
  raise Fluent::ConfigError, "'tag' in chunk_keys is required." if !@chunk_key_tag && @buffered
80
60
  end
@@ -136,7 +116,7 @@ class Fluent::Plugin::HTTPOutput < Fluent::Plugin::Output
136
116
  res = nil
137
117
 
138
118
  begin
139
- if @auth and @auth == :basic
119
+ if @authentication == :basic
140
120
  req.basic_auth(@username, @password)
141
121
  end
142
122
  @last_request_time = Time.now.to_f
@@ -186,6 +166,7 @@ class Fluent::Plugin::HTTPOutput < Fluent::Plugin::Output
186
166
 
187
167
  def write(chunk)
188
168
  tag = chunk.metadata.tag
169
+ @endpoint_url = extract_placeholders(@endpoint_url, chunk.metadata)
189
170
  chunk.msgpack_each do |time, record|
190
171
  handle_record(tag, time, record)
191
172
  end
@@ -42,7 +42,7 @@ class HTTPOutputTestBase < Test::Unit::TestCase
42
42
  srv = WEBrick::HTTPServer.new(self.class.server_config)
43
43
  begin
44
44
  allowed_methods = %w(POST PUT)
45
- srv.mount_proc('/api/') { |req,res|
45
+ srv.mount_proc('/api') { |req,res|
46
46
  @requests += 1
47
47
  unless allowed_methods.include? req.request_method
48
48
  res.status = 405
@@ -70,6 +70,10 @@ class HTTPOutputTestBase < Test::Unit::TestCase
70
70
 
71
71
  res.status = 200
72
72
  }
73
+ srv.mount_proc('/modified-api') { |req,res|
74
+ res.status = 303
75
+ res.body = 'See other'
76
+ }
73
77
  srv.mount_proc('/') { |req,res|
74
78
  res.status = 200
75
79
  res.body = 'running'
@@ -118,6 +122,8 @@ class HTTPOutputTestBase < Test::Unit::TestCase
118
122
  assert_equal 'gauge', @posts[0][:form]['mode']
119
123
  assert_nil @posts[0][:auth]
120
124
 
125
+ assert_equal '303', client.request_get('/modified-api').code
126
+
121
127
  @auth = true
122
128
 
123
129
  assert_equal '403', client.request_post('/api/service/metrics/pos', 'number=30&mode=gauge', post_header).code
@@ -256,6 +262,21 @@ class HTTPOutputTest < HTTPOutputTestBase
256
262
  assert_equal 2, @posts.size
257
263
  end
258
264
 
265
+ def test_emit_form_with_placeholders
266
+ d = create_driver(Fluent::Config::Element.new(
267
+ 'ROOT', '' ,
268
+ {"endpoint_url" => "${endpoint}",
269
+ "buffered" => true},
270
+ [Fluent::Config::Element.new('buffer', 'tag, endpoint', {"@type" => "memory"} ,[])]))
271
+
272
+ d.run(default_tag: 'test.metrics', shutdown: false) do
273
+ d.feed({ 'field1' => 50, 'field2' => 20, 'field3' => 10, 'otherfield' => 1, 'binary' => "\xe3\x81\x82".force_encoding("ascii-8bit"), 'endpoint' => "http://127.0.0.1:#{self.class.port}/modified-api/" })
274
+ end
275
+
276
+ assert_equal 0, @posts.size # post into other URI
277
+ assert_equal "http://127.0.0.1:#{self.class.port}/modified-api/", d.instance.endpoint_url
278
+ end
279
+
259
280
  def test_emit_form_put
260
281
  d = create_driver CONFIG_PUT + %[buffered true]
261
282
  d.run(default_tag: 'test.metrics', shutdown: false) do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-out-http
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marica Odagaki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-02 00:00:00.000000000 Z
11
+ date: 2018-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yajl-ruby