class Fluent::RSSInput

Public Instance Methods

configure(conf) click to toggle source
Calls superclass method
# File lib/fluent/plugin/in_rss.rb, line 12
def configure(conf)
  super

  @attrs = @attrs.split(',').map {|attr| attr.strip }
  @current_time = Time.now
end
emit_rss() click to toggle source
# File lib/fluent/plugin/in_rss.rb, line 34
def emit_rss
  begin
    next_current_time = @current_time
    rss = RSS::Parser.parse(@url)
    rss.items.each do |item|
      record = {}
      @attrs.each do |attr|
        record[attr] = item.send(attr) if item.send(attr)
      end
      time = Time.parse item.date.to_s
      if time > @current_time
        Fluent::Engine.emit @tag, Time.parse(item.date.to_s), record
        next_current_time = time if time > next_current_time
      end
    end
    @current_time = next_current_time
  rescue => e
    log.error e
  end
end
run() click to toggle source
# File lib/fluent/plugin/in_rss.rb, line 27
def run
  loop do
    Thread.new(&method(:emit_rss))
    sleep @interval
  end
end
shutdown() click to toggle source
# File lib/fluent/plugin/in_rss.rb, line 23
def shutdown
  Thread.kill(@thread)
end
start() click to toggle source
# File lib/fluent/plugin/in_rss.rb, line 19
def start
  @thread = Thread.new(&method(:run))
end