logstash-input-http 3.0.1 → 3.0.2
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 +4 -4
- data/CHANGELOG.md +2 -0
- data/lib/logstash/inputs/http.rb +10 -2
- data/logstash-input-http.gemspec +1 -1
- data/spec/inputs/http_spec.rb +145 -164
- metadata +49 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60c60f0e309dd3a4cf01991820faf682b1d20b60
|
4
|
+
data.tar.gz: 8d10272305ecb4fbf7c13eeb527fbfc3a3b15c58
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0251a7b4d3be7bdd20ab639fbb7c4947ff469cbfcecda0160fdca73dc19c28958f0429d5476e1d1fad697b70179120b73ca363fa86ce22a8de11d4e94b13515
|
7
|
+
data.tar.gz: a7110b84f71e5d5ca88e8b8cb5071dacdef98687c6b5d8e74e50180ee50b3c2e0d9b17962d96754a51dda909abdefcd68e3ae56b5dab25fb6c321028e2fa385e
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
## 3.0.2
|
2
|
+
- Use a new class as redefined Puma::Server class as we need to mock one method and only need it for this plugin, but not for all parts using puma in logstash.Fixes https://github.com/logstash-plugins/logstash-input-http/issues/51.
|
1
3
|
## 3.0.1
|
2
4
|
- Republish all the gems under jruby.
|
3
5
|
## 3.0.0
|
data/lib/logstash/inputs/http.rb
CHANGED
@@ -8,7 +8,15 @@ require "puma/minissl"
|
|
8
8
|
require "base64"
|
9
9
|
require "rack"
|
10
10
|
|
11
|
-
|
11
|
+
|
12
|
+
##
|
13
|
+
# We keep the redefined method in a new http server class, this is because
|
14
|
+
# in other parts of logstash we might be using puma as webserver, for example
|
15
|
+
# in the sinatra part we need this method to actually return the REQUEST_PATH,
|
16
|
+
# so it can actually infer the right resource to use.
|
17
|
+
# Fixes https://github.com/logstash-plugins/logstash-input-http/issues/51
|
18
|
+
##
|
19
|
+
class HTTPInputWebServer < Puma::Server
|
12
20
|
# ensure this method doesn't mess up our vanilla request
|
13
21
|
def normalize_env(env, client); end
|
14
22
|
end
|
@@ -87,7 +95,7 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
87
95
|
public
|
88
96
|
def register
|
89
97
|
require "logstash/util/http_compressed_requests"
|
90
|
-
@server = ::
|
98
|
+
@server = ::HTTPInputWebServer.new(nil) # we'll set the rack handler later
|
91
99
|
if @user && @password then
|
92
100
|
token = Base64.strict_encode64("#{@user}:#{@password.value}")
|
93
101
|
@auth_token = "Basic #{token}"
|
data/logstash-input-http.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-input-http'
|
3
|
-
s.version = '3.0.
|
3
|
+
s.version = '3.0.2'
|
4
4
|
s.licenses = ['Apache License (2.0)']
|
5
5
|
s.summary = "Logstash Input plugin that receives HTTP requests"
|
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"
|
data/spec/inputs/http_spec.rb
CHANGED
@@ -16,149 +16,179 @@ describe LogStash::Inputs::Http do
|
|
16
16
|
let(:queue) { Queue.new }
|
17
17
|
let(:port) { rand(5000) + 1025 }
|
18
18
|
|
19
|
-
after :each do
|
20
|
-
subject.stop
|
21
|
-
end
|
22
|
-
|
23
19
|
it_behaves_like "an interruptible input plugin" do
|
24
20
|
let(:config) { { "port" => port } }
|
25
21
|
end
|
26
22
|
|
27
|
-
|
23
|
+
after :each do
|
24
|
+
subject.stop
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "request handling" do
|
28
28
|
subject { LogStash::Inputs::Http.new }
|
29
29
|
before :each do
|
30
30
|
subject.register
|
31
|
-
Thread.new { subject.run(queue) }
|
31
|
+
t = Thread.new { subject.run(queue) }
|
32
|
+
sleep 0.01 until subject.instance_variable_get(:@server).running == 0
|
32
33
|
end
|
34
|
+
|
33
35
|
it "should include remote host in \"host\" property" do
|
34
36
|
agent.post!("http://localhost:8080/meh.json",
|
35
|
-
|
36
|
-
|
37
|
+
:headers => { "content-type" => "text/plain" },
|
38
|
+
:body => "hello")
|
37
39
|
event = queue.pop
|
38
40
|
expect(event.get("host")).to eq("127.0.0.1")
|
39
41
|
end
|
40
|
-
end
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
43
|
+
context "with default codec" do
|
44
|
+
subject { LogStash::Inputs::Http.new("port" => port) }
|
45
|
+
context "when receiving a text/plain request" do
|
46
|
+
it "should process the request normally" do
|
47
|
+
agent.post!("http://localhost:#{port}/meh.json",
|
48
|
+
:headers => { "content-type" => "text/plain" },
|
49
|
+
:body => "hello")
|
50
|
+
event = queue.pop
|
51
|
+
expect(event.get("message")).to eq("hello")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
context "when receiving a deflate compressed text/plain request" do
|
55
|
+
it "should process the request normally" do
|
56
|
+
agent.post!("http://localhost:#{port}/meh.json",
|
57
|
+
:headers => { "content-type" => "text/plain", "content-encoding" => "deflate" },
|
58
|
+
:body => Zlib::Deflate.deflate("hello"))
|
59
|
+
event = queue.pop
|
60
|
+
expect(event.get("message")).to eq("hello")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
context "when receiving a deflate text/plain request that cannot be decompressed" do
|
64
|
+
it "should respond with 400" do
|
65
|
+
response = agent.post!("http://localhost:#{port}/meh.json",
|
66
|
+
:headers => { "content-type" => "text/plain", "content-encoding" => "deflate" },
|
67
|
+
:body => "hello")
|
68
|
+
expect(response.status).to eq(400)
|
69
|
+
end
|
70
|
+
it "should respond with a decompression error" do
|
71
|
+
response = agent.post!("http://localhost:#{port}/meh.json",
|
72
|
+
:headers => { "content-type" => "text/plain", "content-encoding" => "deflate" },
|
73
|
+
:body => "hello")
|
74
|
+
expect(response.read_body).to eq("Failed to decompress body")
|
75
|
+
end
|
76
|
+
end
|
77
|
+
context "when receiving a gzip compressed text/plain request" do
|
78
|
+
it "should process the request normally" do
|
79
|
+
z = StringIO.new ""
|
80
|
+
w = Zlib::GzipWriter.new z
|
81
|
+
w.write("hello")
|
82
|
+
w.finish
|
83
|
+
agent.post!("http://localhost:#{port}/meh.json",
|
84
|
+
:headers => { "content-type" => "text/plain", "content-encoding" => "gzip" },
|
85
|
+
:body => z.string)
|
86
|
+
event = queue.pop
|
87
|
+
expect(event.get("message")).to eq("hello")
|
88
|
+
end
|
89
|
+
end
|
90
|
+
context "when receiving a gzip text/plain request that cannot be decompressed" do
|
91
|
+
let(:response) do
|
92
|
+
agent.post!("http://localhost:#{port}/meh.json",
|
93
|
+
:headers => { "content-type" => "text/plain", "content-encoding" => "gzip" },
|
94
|
+
:body => "hello")
|
95
|
+
end
|
96
|
+
it "should respond with 400" do
|
97
|
+
expect(response.status).to eq(400)
|
98
|
+
end
|
99
|
+
it "should respond with a decompression error" do
|
100
|
+
expect(response.read_body).to eq("Failed to decompress body")
|
101
|
+
end
|
102
|
+
end
|
103
|
+
context "when receiving an application/json request" do
|
104
|
+
it "should parse the json body" do
|
105
|
+
agent.post!("http://localhost:#{port}/meh.json",
|
106
|
+
:headers => { "content-type" => "application/json" },
|
107
|
+
:body => { "message_body" => "Hello" }.to_json)
|
108
|
+
event = queue.pop
|
109
|
+
expect(event.get("message_body")).to eq("Hello")
|
110
|
+
end
|
79
111
|
end
|
80
112
|
end
|
81
|
-
context "
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
z = StringIO.new ""
|
86
|
-
w = Zlib::GzipWriter.new z
|
87
|
-
w.write("hello")
|
88
|
-
w.finish
|
89
|
-
agent.post!("http://localhost:#{port}/meh.json",
|
90
|
-
:headers => { "content-type" => "text/plain", "content-encoding" => "gzip" },
|
91
|
-
:body => z.string)
|
113
|
+
context "with json codec" do
|
114
|
+
subject { LogStash::Inputs::Http.new("port" => port, "codec" => "json") }
|
115
|
+
it "should parse the json body" do
|
116
|
+
agent.post!("http://localhost:#{port}/meh.json", :body => { "message" => "Hello" }.to_json)
|
92
117
|
event = queue.pop
|
93
|
-
expect(event.get("message")).to eq("
|
94
|
-
end
|
95
|
-
end
|
96
|
-
context "when receiving a gzip text/plain request that cannot be decompressed" do
|
97
|
-
let!(:response) do
|
98
|
-
subject.register
|
99
|
-
Thread.new { subject.run(queue) }
|
100
|
-
agent.post!("http://localhost:#{port}/meh.json",
|
101
|
-
:headers => { "content-type" => "text/plain", "content-encoding" => "gzip" },
|
102
|
-
:body => "hello")
|
103
|
-
end
|
104
|
-
it "should respond with 400" do
|
105
|
-
expect(response.status).to eq(400)
|
106
|
-
end
|
107
|
-
it "should respond with a decompression error" do
|
108
|
-
expect(response.read_body).to eq("Failed to decompress body")
|
118
|
+
expect(event.get("message")).to eq("Hello")
|
109
119
|
end
|
110
120
|
end
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
121
|
+
|
122
|
+
context "when using a custom codec mapping" do
|
123
|
+
subject { LogStash::Inputs::Http.new("port" => port,
|
124
|
+
"additional_codecs" => { "application/json" => "plain" }) }
|
125
|
+
it "should decode the message accordingly" do
|
126
|
+
body = { "message" => "Hello" }.to_json
|
115
127
|
agent.post!("http://localhost:#{port}/meh.json",
|
116
128
|
:headers => { "content-type" => "application/json" },
|
117
|
-
|
129
|
+
:body => body)
|
118
130
|
event = queue.pop
|
119
|
-
expect(event.get("
|
131
|
+
expect(event.get("message")).to eq(body)
|
120
132
|
end
|
121
133
|
end
|
122
|
-
end
|
123
|
-
|
124
|
-
context "with json codec" do
|
125
|
-
subject { LogStash::Inputs::Http.new("port" => port, "codec" => "json") }
|
126
|
-
it "should parse the json body" do
|
127
|
-
subject.register
|
128
|
-
Thread.new { subject.run(queue) }
|
129
|
-
agent.post!("http://localhost:#{port}/meh.json", :body => { "message" => "Hello" }.to_json)
|
130
|
-
event = queue.pop
|
131
|
-
expect(event.get("message")).to eq("Hello")
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
context "when using a custom codec mapping" do
|
136
|
-
subject { LogStash::Inputs::Http.new("port" => port,
|
137
|
-
"additional_codecs" => { "application/json" => "plain" }) }
|
138
|
-
it "should decode the message accordingly" do
|
139
|
-
body = { "message" => "Hello" }.to_json
|
140
|
-
subject.register
|
141
|
-
Thread.new { subject.run(queue) }
|
142
|
-
agent.post!("http://localhost:#{port}/meh.json",
|
143
|
-
:headers => { "content-type" => "application/json" },
|
144
|
-
:body => body)
|
145
|
-
event = queue.pop
|
146
|
-
expect(event.get("message")).to eq(body)
|
147
|
-
end
|
148
|
-
end
|
149
134
|
|
150
|
-
|
151
|
-
|
152
|
-
|
135
|
+
context "when using custom headers" do
|
136
|
+
let(:custom_headers) { { 'access-control-allow-origin' => '*' } }
|
137
|
+
subject { LogStash::Inputs::Http.new("port" => port, "response_headers" => custom_headers) }
|
153
138
|
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
139
|
+
describe "the response" do
|
140
|
+
it "should include the custom headers" do
|
141
|
+
response = agent.post!("http://localhost:#{port}/meh", :body => "hello")
|
142
|
+
expect(response.headers.to_hash).to include(custom_headers)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
describe "basic auth" do
|
147
|
+
user = "test"; password = "pwd"
|
148
|
+
subject { LogStash::Inputs::Http.new("port" => port, "user" => user, "password" => password) }
|
149
|
+
let(:auth_token) { Base64.strict_encode64("#{user}:#{password}") }
|
150
|
+
context "when client doesn't present auth token" do
|
151
|
+
let!(:response) { agent.post!("http://localhost:#{port}/meh", :body => "hi") }
|
152
|
+
it "should respond with 401" do
|
153
|
+
expect(response.status).to eq(401)
|
154
|
+
end
|
155
|
+
it "should not generate an event" do
|
156
|
+
expect(queue).to be_empty
|
157
|
+
end
|
158
|
+
end
|
159
|
+
context "when client presents incorrect auth token" do
|
160
|
+
let!(:response) do
|
161
|
+
agent.post!("http://localhost:#{port}/meh",
|
162
|
+
:headers => {
|
163
|
+
"content-type" => "text/plain",
|
164
|
+
"authorization" => "Basic meh"
|
165
|
+
},
|
166
|
+
:body => "hi")
|
167
|
+
end
|
168
|
+
it "should respond with 401" do
|
169
|
+
expect(response.status).to eq(401)
|
170
|
+
end
|
171
|
+
it "should not generate an event" do
|
172
|
+
expect(queue).to be_empty
|
173
|
+
end
|
174
|
+
end
|
175
|
+
context "when client presents correct auth token" do
|
176
|
+
let!(:response) do
|
177
|
+
agent.post!("http://localhost:#{port}/meh",
|
178
|
+
:headers => {
|
179
|
+
"content-type" => "text/plain",
|
180
|
+
"authorization" => "Basic #{auth_token}"
|
181
|
+
}, :body => "hi")
|
182
|
+
end
|
183
|
+
it "should respond with 200" do
|
184
|
+
expect(response.status).to eq(200)
|
185
|
+
end
|
186
|
+
it "should generate an event" do
|
187
|
+
expect(queue).to_not be_empty
|
188
|
+
end
|
160
189
|
end
|
161
190
|
end
|
191
|
+
|
162
192
|
end
|
163
193
|
|
164
194
|
context "with :ssl => false" do
|
@@ -184,53 +214,4 @@ describe LogStash::Inputs::Http do
|
|
184
214
|
end
|
185
215
|
end
|
186
216
|
end
|
187
|
-
describe "basic auth" do
|
188
|
-
user = "test"; password = "pwd"
|
189
|
-
subject { LogStash::Inputs::Http.new("port" => port, "user" => user, "password" => password) }
|
190
|
-
let(:auth_token) { Base64.strict_encode64("#{user}:#{password}") }
|
191
|
-
before :each do
|
192
|
-
subject.register
|
193
|
-
Thread.new { subject.run(queue) }
|
194
|
-
end
|
195
|
-
context "when client doesn't present auth token" do
|
196
|
-
let!(:response) { agent.post!("http://localhost:#{port}/meh", :body => "hi") }
|
197
|
-
it "should respond with 401" do
|
198
|
-
expect(response.status).to eq(401)
|
199
|
-
end
|
200
|
-
it "should not generate an event" do
|
201
|
-
expect(queue).to be_empty
|
202
|
-
end
|
203
|
-
end
|
204
|
-
context "when client presents incorrect auth token" do
|
205
|
-
let!(:response) do
|
206
|
-
agent.post!("http://localhost:#{port}/meh",
|
207
|
-
:headers => {
|
208
|
-
"content-type" => "text/plain",
|
209
|
-
"authorization" => "Basic meh"
|
210
|
-
},
|
211
|
-
:body => "hi")
|
212
|
-
end
|
213
|
-
it "should respond with 401" do
|
214
|
-
expect(response.status).to eq(401)
|
215
|
-
end
|
216
|
-
it "should not generate an event" do
|
217
|
-
expect(queue).to be_empty
|
218
|
-
end
|
219
|
-
end
|
220
|
-
context "when client presents correct auth token" do
|
221
|
-
let!(:response) do
|
222
|
-
agent.post!("http://localhost:#{port}/meh",
|
223
|
-
:headers => {
|
224
|
-
"content-type" => "text/plain",
|
225
|
-
"authorization" => "Basic #{auth_token}"
|
226
|
-
}, :body => "hi")
|
227
|
-
end
|
228
|
-
it "should respond with 200" do
|
229
|
-
expect(response.status).to eq(200)
|
230
|
-
end
|
231
|
-
it "should generate an event" do
|
232
|
-
expect(queue).to_not be_empty
|
233
|
-
end
|
234
|
-
end
|
235
|
-
end
|
236
217
|
end
|
metadata
CHANGED
@@ -1,133 +1,133 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-http
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
name: logstash-core-plugin-api
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
14
20
|
requirement: !ruby/object:Gem::Requirement
|
15
21
|
requirements:
|
16
|
-
- -
|
22
|
+
- - ~>
|
17
23
|
- !ruby/object:Gem::Version
|
18
24
|
version: '2.0'
|
19
|
-
name: logstash-core-plugin-api
|
20
25
|
prerelease: false
|
21
26
|
type: :runtime
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: logstash-codec-plain
|
22
29
|
version_requirements: !ruby/object:Gem::Requirement
|
23
30
|
requirements:
|
24
|
-
- -
|
31
|
+
- - '>='
|
25
32
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
27
|
-
- !ruby/object:Gem::Dependency
|
33
|
+
version: '0'
|
28
34
|
requirement: !ruby/object:Gem::Requirement
|
29
35
|
requirements:
|
30
|
-
- -
|
36
|
+
- - '>='
|
31
37
|
- !ruby/object:Gem::Version
|
32
38
|
version: '0'
|
33
|
-
name: logstash-codec-plain
|
34
39
|
prerelease: false
|
35
40
|
type: :runtime
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: stud
|
36
43
|
version_requirements: !ruby/object:Gem::Requirement
|
37
44
|
requirements:
|
38
|
-
- -
|
45
|
+
- - '>='
|
39
46
|
- !ruby/object:Gem::Version
|
40
47
|
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
48
|
requirement: !ruby/object:Gem::Requirement
|
43
49
|
requirements:
|
44
|
-
- -
|
50
|
+
- - '>='
|
45
51
|
- !ruby/object:Gem::Version
|
46
52
|
version: '0'
|
47
|
-
name: stud
|
48
53
|
prerelease: false
|
49
54
|
type: :runtime
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: puma
|
50
57
|
version_requirements: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
|
-
- -
|
59
|
+
- - ~>
|
53
60
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
55
|
-
-
|
61
|
+
version: '2.16'
|
62
|
+
- - '>='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 2.16.0
|
56
65
|
requirement: !ruby/object:Gem::Requirement
|
57
66
|
requirements:
|
58
|
-
- -
|
67
|
+
- - ~>
|
59
68
|
- !ruby/object:Gem::Version
|
60
69
|
version: '2.16'
|
61
|
-
- -
|
70
|
+
- - '>='
|
62
71
|
- !ruby/object:Gem::Version
|
63
72
|
version: 2.16.0
|
64
|
-
name: puma
|
65
73
|
prerelease: false
|
66
74
|
type: :runtime
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: rack
|
67
77
|
version_requirements: !ruby/object:Gem::Requirement
|
68
78
|
requirements:
|
69
|
-
- -
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
version: '2.16'
|
72
|
-
- - ">="
|
79
|
+
- - ~>
|
73
80
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
75
|
-
- !ruby/object:Gem::Dependency
|
81
|
+
version: '1'
|
76
82
|
requirement: !ruby/object:Gem::Requirement
|
77
83
|
requirements:
|
78
|
-
- -
|
84
|
+
- - ~>
|
79
85
|
- !ruby/object:Gem::Version
|
80
86
|
version: '1'
|
81
|
-
name: rack
|
82
87
|
prerelease: false
|
83
88
|
type: :runtime
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: logstash-devutils
|
84
91
|
version_requirements: !ruby/object:Gem::Requirement
|
85
92
|
requirements:
|
86
|
-
- -
|
93
|
+
- - '>='
|
87
94
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
89
|
-
- !ruby/object:Gem::Dependency
|
95
|
+
version: '0'
|
90
96
|
requirement: !ruby/object:Gem::Requirement
|
91
97
|
requirements:
|
92
|
-
- -
|
98
|
+
- - '>='
|
93
99
|
- !ruby/object:Gem::Version
|
94
100
|
version: '0'
|
95
|
-
name: logstash-devutils
|
96
101
|
prerelease: false
|
97
102
|
type: :development
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: logstash-codec-json
|
98
105
|
version_requirements: !ruby/object:Gem::Requirement
|
99
106
|
requirements:
|
100
|
-
- -
|
107
|
+
- - '>='
|
101
108
|
- !ruby/object:Gem::Version
|
102
109
|
version: '0'
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
110
|
requirement: !ruby/object:Gem::Requirement
|
105
111
|
requirements:
|
106
|
-
- -
|
112
|
+
- - '>='
|
107
113
|
- !ruby/object:Gem::Version
|
108
114
|
version: '0'
|
109
|
-
name: logstash-codec-json
|
110
115
|
prerelease: false
|
111
116
|
type: :development
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: ftw
|
112
119
|
version_requirements: !ruby/object:Gem::Requirement
|
113
120
|
requirements:
|
114
|
-
- -
|
121
|
+
- - '>='
|
115
122
|
- !ruby/object:Gem::Version
|
116
123
|
version: '0'
|
117
|
-
- !ruby/object:Gem::Dependency
|
118
124
|
requirement: !ruby/object:Gem::Requirement
|
119
125
|
requirements:
|
120
|
-
- -
|
126
|
+
- - '>='
|
121
127
|
- !ruby/object:Gem::Version
|
122
128
|
version: '0'
|
123
|
-
name: ftw
|
124
129
|
prerelease: false
|
125
130
|
type: :development
|
126
|
-
version_requirements: !ruby/object:Gem::Requirement
|
127
|
-
requirements:
|
128
|
-
- - ">="
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
version: '0'
|
131
131
|
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
|
132
132
|
email: info@elastic.co
|
133
133
|
executables: []
|
@@ -156,19 +156,20 @@ require_paths:
|
|
156
156
|
- lib
|
157
157
|
required_ruby_version: !ruby/object:Gem::Requirement
|
158
158
|
requirements:
|
159
|
-
- -
|
159
|
+
- - '>='
|
160
160
|
- !ruby/object:Gem::Version
|
161
161
|
version: '0'
|
162
162
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- -
|
164
|
+
- - '>='
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
requirements: []
|
168
168
|
rubyforge_project:
|
169
|
-
rubygems_version: 2.4.
|
169
|
+
rubygems_version: 2.4.6
|
170
170
|
signing_key:
|
171
171
|
specification_version: 4
|
172
172
|
summary: Logstash Input plugin that receives HTTP requests
|
173
173
|
test_files:
|
174
174
|
- spec/inputs/http_spec.rb
|
175
|
+
has_rdoc:
|