logstash-input-http_poller 4.0.5 → 5.0.0

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: d8b6a0c83d9ba60c4adc79c717e782e5f5eba221de0bb7cd1988c995562c70f7
4
- data.tar.gz: 0ba31f25341fe58cca2e9e1218942ab2892e6f14b84fbe375275c0e779e42cd4
3
+ metadata.gz: dae0f4077b0291250677f8c0dec67e0c713bba9d6994b4b2406fbffb47f92459
4
+ data.tar.gz: 05a45a34f59b148c8c04c73501f06fe1d7c41e3bde6ab6f814ca0e7a07a9f1e7
5
5
  SHA512:
6
- metadata.gz: a747f8e2e313bcc2a400e14fa52f6fc577781302747f1ae50f7ac64352d873f6bcf81df0e92f615ff814746193048a4ea7234a3290b034b5db7acfcecff42f1f
7
- data.tar.gz: 48c3480f8afbc36cc645b9ef91cb191284fdaa5a4faae0a3bd25689cdce96f432b2e633fe3293f9317f4edd4c8c9fcf0a418ae4766f49b4e72be809ab81b5cb6
6
+ metadata.gz: 9522d889fe4f3ae718783963437ed7c360e59755979d9e9db98cb5aef4569e1c4ffb10ca9f92d2f0de0d9c072104edf78b1d1c6b55a2209fdade646c2b14bd01
7
+ data.tar.gz: 7dd5226d0a736cc25a4189a3751d3bf4bfa6f11c028858f2fc35cea2286e3b35ee5237b349df143d66f5316391bf33ed07302352d3be04d36be4dca770da5105
@@ -1,3 +1,10 @@
1
+ ## 5.0.0
2
+ - Removed obsolete field `interval`
3
+
4
+ ## 4.0.6
5
+ - Changed `schedule` entry to show that it is required
6
+ [#102](https://github.com/logstash-plugins/logstash-input-http_poller/pull/102)
7
+
1
8
  ## 4.0.5
2
9
  - Docs: Set the default_codec doc attribute.
3
10
 
@@ -114,7 +114,7 @@ This plugin supports the following configuration options plus the <<plugins-{typ
114
114
  | <<plugins-{type}s-{plugin}-proxy>> |<<,>>|No
115
115
  | <<plugins-{type}s-{plugin}-request_timeout>> |<<number,number>>|No
116
116
  | <<plugins-{type}s-{plugin}-retry_non_idempotent>> |<<boolean,boolean>>|No
117
- | <<plugins-{type}s-{plugin}-schedule>> |<<hash,hash>>|No
117
+ | <<plugins-{type}s-{plugin}-schedule>> |<<hash,hash>>|Yes
118
118
  | <<plugins-{type}s-{plugin}-socket_timeout>> |<<number,number>>|No
119
119
  | <<plugins-{type}s-{plugin}-target>> |<<string,string>>|No
120
120
  | <<plugins-{type}s-{plugin}-truststore>> |a valid filesystem path|No
@@ -17,8 +17,6 @@ class LogStash::Inputs::HTTP_Poller < LogStash::Inputs::Base
17
17
  # The name and the url will be passed in the outputed event
18
18
  config :urls, :validate => :hash, :required => true
19
19
 
20
- config :interval, :validate => :number, :obsolete => "The interval options is obsolete. Use schedule instead"
21
-
22
20
  # Schedule of when to periodically poll from the urls
23
21
  # Format: A hash with
24
22
  # + key: "cron" | "every" | "in" | "at"
@@ -165,7 +163,7 @@ class LogStash::Inputs::HTTP_Poller < LogStash::Inputs::Base
165
163
  # If there is a usable response. HEAD requests are `nil` and empty get
166
164
  # responses come up as "" which will cause the codec to not yield anything
167
165
  if body && body.size > 0
168
- @codec.decode(body) do |decoded|
166
+ decode_and_flush(@codec, body) do |decoded|
169
167
  event = @target ? LogStash::Event.new(@target => decoded.to_hash) : decoded
170
168
  handle_decoded_event(queue, name, request, response, event, execution_time)
171
169
  end
@@ -175,6 +173,12 @@ class LogStash::Inputs::HTTP_Poller < LogStash::Inputs::Base
175
173
  end
176
174
  end
177
175
 
176
+ private
177
+ def decode_and_flush(codec, body, &yielder)
178
+ codec.decode(body, &yielder)
179
+ codec.flush(&yielder)
180
+ end
181
+
178
182
  private
179
183
  def handle_decoded_event(queue, name, request, response, event, execution_time)
180
184
  apply_metadata(event, name, request, response, execution_time)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-input-http_poller'
3
- s.version = '4.0.5'
3
+ s.version = '5.0.0'
4
4
  s.licenses = ['Apache License (2.0)']
5
5
  s.summary = "Decodes the output of an HTTP API into events"
6
6
  s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
@@ -20,11 +20,12 @@ Gem::Specification.new do |s|
20
20
  # Gem dependencies
21
21
  s.add_runtime_dependency "logstash-core-plugin-api", ">= 1.60", "<= 2.99"
22
22
  s.add_runtime_dependency 'logstash-codec-plain'
23
- s.add_runtime_dependency 'logstash-mixin-http_client', ">= 6.0.0", "< 7.0.0"
23
+ s.add_runtime_dependency 'logstash-mixin-http_client', "~> 7"
24
24
  s.add_runtime_dependency 'stud', "~> 0.0.22"
25
25
  s.add_runtime_dependency 'rufus-scheduler', "~>3.0.9"
26
26
 
27
27
  s.add_development_dependency 'logstash-codec-json'
28
+ s.add_development_dependency 'logstash-codec-line'
28
29
  s.add_development_dependency 'logstash-devutils'
29
30
  s.add_development_dependency 'flores'
30
31
  s.add_development_dependency 'timecop'
@@ -462,6 +462,40 @@ describe LogStash::Inputs::HTTP_Poller do
462
462
  expect(event.get(target)).to include(payload_normalized)
463
463
  end
464
464
  end
465
+
466
+ context 'using a line codec' do
467
+ let(:opts) do
468
+ default_opts.merge({"codec" => "line"})
469
+ end
470
+ subject(:events) do
471
+ [].tap do |events|
472
+ events << queue.pop until queue.empty?
473
+ end
474
+ end
475
+
476
+ context 'when response has a trailing newline' do
477
+ let(:response_body) { "one\ntwo\nthree\nfour\n" }
478
+ it 'emits all events' do
479
+ expect(events.size).to equal(4)
480
+ messages = events.map{|e| e.get('message')}
481
+ expect(messages).to include('one')
482
+ expect(messages).to include('two')
483
+ expect(messages).to include('three')
484
+ expect(messages).to include('four')
485
+ end
486
+ end
487
+ context 'when response has no trailing newline' do
488
+ let(:response_body) { "one\ntwo\nthree\nfour" }
489
+ it 'emits all events' do
490
+ expect(events.size).to equal(4)
491
+ messages = events.map{|e| e.get('message')}
492
+ expect(messages).to include('one')
493
+ expect(messages).to include('two')
494
+ expect(messages).to include('three')
495
+ expect(messages).to include('four')
496
+ end
497
+ end
498
+ end
465
499
  end
466
500
  end
467
501
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-input-http_poller
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.5
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-04-06 00:00:00.000000000 Z
12
+ date: 2019-01-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  requirement: !ruby/object:Gem::Requirement
@@ -48,23 +48,17 @@ dependencies:
48
48
  - !ruby/object:Gem::Dependency
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: 6.0.0
54
- - - "<"
51
+ - - "~>"
55
52
  - !ruby/object:Gem::Version
56
- version: 7.0.0
53
+ version: '7'
57
54
  name: logstash-mixin-http_client
58
55
  prerelease: false
59
56
  type: :runtime
60
57
  version_requirements: !ruby/object:Gem::Requirement
61
58
  requirements:
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- version: 6.0.0
65
- - - "<"
59
+ - - "~>"
66
60
  - !ruby/object:Gem::Version
67
- version: 7.0.0
61
+ version: '7'
68
62
  - !ruby/object:Gem::Dependency
69
63
  requirement: !ruby/object:Gem::Requirement
70
64
  requirements:
@@ -107,6 +101,20 @@ dependencies:
107
101
  - - ">="
108
102
  - !ruby/object:Gem::Version
109
103
  version: '0'
104
+ - !ruby/object:Gem::Dependency
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ name: logstash-codec-line
111
+ prerelease: false
112
+ type: :development
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
110
118
  - !ruby/object:Gem::Dependency
111
119
  requirement: !ruby/object:Gem::Requirement
112
120
  requirements:
@@ -188,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
196
  version: '0'
189
197
  requirements: []
190
198
  rubyforge_project:
191
- rubygems_version: 2.6.11
199
+ rubygems_version: 2.6.13
192
200
  signing_key:
193
201
  specification_version: 4
194
202
  summary: Decodes the output of an HTTP API into events