mirror of
https://github.com/Fishwaldo/huginn.git
synced 2025-03-15 19:31:26 +00:00
Allow PostAgent headers to interpolate event data (#1606)
This commit is contained in:
parent
6c9d1c0f55
commit
cc72f79e0b
2 changed files with 31 additions and 9 deletions
|
@ -122,17 +122,19 @@ module Agents
|
|||
|
||||
def receive(incoming_events)
|
||||
incoming_events.each do |event|
|
||||
outgoing = interpolated(event)['payload'].presence || {}
|
||||
if boolify(interpolated['no_merge'])
|
||||
handle outgoing, event.payload
|
||||
else
|
||||
handle outgoing.merge(event.payload), event.payload
|
||||
interpolate_with(event) do
|
||||
outgoing = interpolated['payload'].presence || {}
|
||||
if boolify(interpolated['no_merge'])
|
||||
handle outgoing, event.payload, headers(interpolated[:headers])
|
||||
else
|
||||
handle outgoing.merge(event.payload), event.payload, headers(interpolated[:headers])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def check
|
||||
handle interpolated['payload'].presence || {}
|
||||
handle interpolated['payload'].presence || {}, headers
|
||||
end
|
||||
|
||||
private
|
||||
|
@ -160,9 +162,8 @@ module Agents
|
|||
}
|
||||
end
|
||||
|
||||
def handle(data, payload = {})
|
||||
def handle(data, payload = {}, headers)
|
||||
url = interpolated(payload)[:post_url]
|
||||
headers = headers()
|
||||
|
||||
case method
|
||||
when 'get', 'delete'
|
||||
|
|
|
@ -33,7 +33,7 @@ describe Agents::PostAgent do
|
|||
stub_request(:any, /:/).to_return { |request|
|
||||
method = request.method
|
||||
@requests += 1
|
||||
@sent_requests[method] << req = OpenStruct.new(uri: request.uri)
|
||||
@sent_requests[method] << req = OpenStruct.new(uri: request.uri, headers: request.headers)
|
||||
case method
|
||||
when :get, :delete
|
||||
req.data = request.uri.query
|
||||
|
@ -137,6 +137,18 @@ describe Agents::PostAgent do
|
|||
expect(uri.path).to eq('/a_variable')
|
||||
expect(uri.query).to eq("existing_param=existing_value")
|
||||
end
|
||||
|
||||
it "interpolates outgoing headers with the event payload" do
|
||||
@checker.options['headers'] = {
|
||||
"Foo" => "{{ variable }}"
|
||||
}
|
||||
@event.payload = {
|
||||
'variable' => 'a_variable'
|
||||
}
|
||||
@checker.receive([@event])
|
||||
headers = @sent_requests[:post].first.headers
|
||||
expect(headers["Foo"]).to eq("a_variable")
|
||||
end
|
||||
end
|
||||
|
||||
describe "#check" do
|
||||
|
@ -199,6 +211,15 @@ describe Agents::PostAgent do
|
|||
expect(@sent_requests[:post][0].data).to eq('<test>hello</test>')
|
||||
end
|
||||
|
||||
it "interpolates outgoing headers" do
|
||||
@checker.options['headers'] = {
|
||||
"Foo" => "{% credential aws_key %}"
|
||||
}
|
||||
@checker.check
|
||||
headers = @sent_requests[:post].first.headers
|
||||
expect(headers["Foo"]).to eq("2222222222-jane")
|
||||
end
|
||||
|
||||
describe "emitting events" do
|
||||
context "when emit_events is not set to true" do
|
||||
it "does not emit events" do
|
||||
|
|
Loading…
Add table
Reference in a new issue