Merge pull request #1017 from cantino/allow_url_from_event_to_be_array

Allow url_from_event in the WebsiteAgent to be an Array

Andrew Cantino 9 anos atrás
pai
commit
065a35c024
2 arquivos alterados com 17 adições e 4 exclusões
  1. 4 4
      app/models/agents/website_agent.rb
  2. 13 0
      spec/models/agents/website_agent_spec.rb

+ 4 - 4
app/models/agents/website_agent.rb

@@ -251,11 +251,11 @@ module Agents
251 251
       check_urls(interpolated['url'])
252 252
     end
253 253
 
254
-    def check_urls(in_url)
254
+    def check_urls(in_url, payload = {})
255 255
       return unless in_url.present?
256 256
 
257 257
       Array(in_url).each do |url|
258
-        check_url(url)
258
+        check_url(url, payload)
259 259
       end
260 260
     end
261 261
 
@@ -322,11 +322,11 @@ module Agents
322 322
         interpolate_with(event) do
323 323
           url_to_scrape =
324 324
             if url_template = options['url_from_event'].presence
325
-              interpolate_string(url_template)
325
+              interpolate_options(url_template)
326 326
             else
327 327
               event.payload['url']
328 328
             end
329
-          check_url(url_to_scrape,
329
+          check_urls(url_to_scrape,
330 330
                     interpolated['mode'].to_s == "merge" ? event.payload : {})
331 331
         end
332 332
       end

+ 13 - 0
spec/models/agents/website_agent_spec.rb

@@ -673,6 +673,19 @@ fire: hot
673 673
         expect(stub).to have_been_requested
674 674
       end
675 675
 
676
+      it "should allow url_from_event to be an array of urls" do
677
+        stub1 = stub_request(:any, 'http://example.org/?url=http%3A%2F%2Fxkcd.com')
678
+        stub2 = stub_request(:any, 'http://google.org/?url=http%3A%2F%2Fxkcd.com')
679
+
680
+        @checker.options = @valid_options.merge(
681
+          'url_from_event' => ['http://example.org/?url={{url | uri_escape}}', 'http://google.org/?url={{url | uri_escape}}']
682
+        )
683
+        @checker.receive([@event])
684
+
685
+        expect(stub1).to have_been_requested
686
+        expect(stub2).to have_been_requested
687
+      end
688
+
676 689
       it "should interpolate values from incoming event payload" do
677 690
         expect {
678 691
           @valid_options['extract'] = {