class Fluent::JsonApiInput
Attributes
urls[R]
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/fluent/plugin/in_json_api.rb, line 13 def initialize super require 'json' require 'net/http' @urls = [] end
Public Instance Methods
configure(config)
click to toggle source
Calls superclass method
# File lib/fluent/plugin/in_json_api.rb, line 20 def configure(config) super begin result = [] (eval config['rules']).each_pair do |key,replecements| combinations = [] (replecements.to_a).each do |replacement| combinations << {key => replacement} end result << combinations end @rules = result[0].product(*result[1..-1]) rescue SyntaxError,StandardError => e raise Fluent::ConfigError.new "rules has some errors #{e}" end raise Fluent::ConfigError unless ['http','https'].include? URI.parse(config['url']).scheme @rules.each do |pair| url = config['url'] pair.each do |key_replacements| key_replacements.each do |key,replacement| url = url.gsub(key.to_s,replacement.to_s) end end @urls.push url end end
crawl(url)
click to toggle source
# File lib/fluent/plugin/in_json_api.rb, line 64 def crawl(url) response = Net::HTTP.get_response(URI.parse(url)) case response when Net::HTTPSuccess return JSON.parse response.body end raise Fluent::JsonApiError.new end
run()
click to toggle source
# File lib/fluent/plugin/in_json_api.rb, line 55 def run loop { @urls.each do |url| Engine.emit @tag, Engine.now , crawl(url) run_interval @run_interval if @run_interval.to_i > 0 end } end
shutdown()
click to toggle source
# File lib/fluent/plugin/in_json_api.rb, line 73 def shutdown Thread.kill(@thread) end
start()
click to toggle source
Calls superclass method
# File lib/fluent/plugin/in_json_api.rb, line 50 def start super @thread = Thread.new(&method(:run)) end