Class: Ruboty::Handlers::Rss

Inherits:
Base
  • Object
show all
Defined in:
lib/ruboty/handlers/rss.rb

Constant Summary collapse

DEFAULT_INTERVAL =
60 * 15
NAMESPACE =
"rss"

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Rss

Returns a new instance of Rss.



13
14
15
16
17
# File 'lib/ruboty/handlers/rss.rb', line 13

def initialize(*args)
  super(*args)
  load_feeds
  start_watching
end

Instance Method Details

#list(message) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/ruboty/handlers/rss.rb', line 45

def list(message)
  list = feeds.each_value.reject do |feed|
    feed.from && message.from && feed.from != message.from
  end.map do |feed|
    "#{feed.id}: #{feed.url}"
  end
  if list.empty?
    message.reply("No RSS feed")
  else
    message.reply(list.join("\n"))
  end
end

#subscribe(message) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/ruboty/handlers/rss.rb', line 19

def subscribe(message)
  urls = message[:urls].split(' ')
  urls.each do |url|
    feed = Ruboty::Rss::Feed.new(
      message.original.except(:robot).merge(
        id: generate_id,
        url: url,
      )
    )

    feeds[feed.id] = feed
    feed_data[feed.id] = feed.attributes
  end

  message.reply("#{urls.size} feed(s) subscribed.")
end

#unsubscribe(message) ⇒ Object



36
37
38
39
40
41
42
43
# File 'lib/ruboty/handlers/rss.rb', line 36

def unsubscribe(message)
  id = message[:id].to_i

  feeds.delete(id)
  feed_data.delete(id)

  message.reply("Unsubscribed.")
end