class Feedig::Session

Public Class Methods

new(*args) click to toggle source
Calls superclass method
# File lib/feedig/session.rb, line 16
def initialize(*args)
  super
end

Public Instance Methods

channels() click to toggle source
# File lib/feedig/session.rb, line 12
def channels
  ['#notification']
end
client() click to toggle source
# File lib/feedig/session.rb, line 20
def client
  @client ||= YAML.load_file('./lib/feedig/resources.yml').inject({}) { |hash, (name, url)|
                hash[name] = Feedzirra::Feed.fetch_and_parse url
                hash
              }
end
on_disconnected() click to toggle source
# File lib/feedig/session.rb, line 27
def on_disconnected
  @retrieve_thread.kill rescue nil
end
on_user(m) click to toggle source
Calls superclass method
# File lib/feedig/session.rb, line 31
def on_user(m)
  super

  channels.each { |channel| post @nick, JOIN, channel }

  client.each_pair do |name, feed|
    post(
      "RECENT",
      PRIVMSG,
      "#notification",
      "\0035#{name}:\017 \00314#{feed.entries[0].title} [ #{feed.entries[0].url} ] #{feed.entries[0].last_modified}\017"
    )
  end

  @retrieve_thread = Thread.start do
    loop do
      retrieve @opts.interval
    end
  end
end
server_version() click to toggle source
# File lib/feedig/session.rb, line 8
def server_version
  Feedig::VERSION
end

Private Instance Methods

retrieve(interval) click to toggle source
# File lib/feedig/session.rb, line 54
def retrieve(interval)
  @log.info 'retrieveing feed...'

  client.each_pair do |name, feed|
    feed = Feedzirra::Feed.update feed
    if feed.has_new_entries?
      feed.new_entries.each do |new_entry|
        post(
          "NEW",
          PRIVMSG,
          "#notification",
          "\0035#{name}:\017 \00314#{new_entry.title} [ #{new_entry.url} ] #{new_entry.last_modified}\017"
        )
      end
      feed.new_entries = []
    end
  end

  @log.info 'sleep'
  sleep interval
rescue Exception => e
  @log.error e.inspect
  e.backtrace.each do |l|
    @log.error "\t#{l}"
  end
  sleep 10
end