lib/cinch/plugins/hangouts/subscription.rb
# -*- encoding : utf-8 -*-
# Class to handle user subscriptions
class Subscription < Cinch::Plugins::Hangouts
attr_accessor :nick, :all_links
def initialize(nick, files)
@nick = nick
@all_links = false
@files = files
save
end
def save
subs = Subscription.storage(@files)
subs.data[@nick] = self
subs.save
end
def destroy
subs = Subscription.storage(@files)
subs.data.delete(@nick)
subs.save
end
def self.for_user(nick, files)
nicks = list(files)
return nil unless nicks.key?(nick)
Subscription.new(nick[nick], files)
end
def self.list(files)
storage(files).data
end
def self.notify(hangout_id, bot, type, files)
nick = Hangout.find_by_id(hangout_id, files).nick
list(files).each_value do |s|
# Don't link the person who linked it.
unless nick == s.nick
user = Cinch::User.new(s.nick, bot)
message = "#{nick} just linked a new hangout at: " +
Hangout.url(hangout_id)
respond(user, message, type)
end
end
end
def self.respond(user, message, type)
case type
when :notice
user.notice message
when :pm
user.send message
end
end
private
def self.storage(files)
fail "No Subscription filename passed" unless files.key?(:subscriptions)
Cinch::Storage.new(files[:subscriptions])
end
end