journalduhacker/extras/pushover.rb

51 lines
1.1 KiB
Ruby
Raw Normal View History

2012-07-03 18:59:50 +02:00
class Pushover
cattr_accessor :API_KEY
# this needs to be overridden in config/initializers/production.rb
@@API_KEY = nil
@@SOUNDS = {}
def self.sounds
2012-07-03 18:59:50 +02:00
if !@@API_KEY
return @@SOUNDS
2012-07-03 18:59:50 +02:00
end
if @@SOUNDS.length <= 1
begin
s = Sponge.new
res = s.get("https://api.pushover.net/1/sounds.json?token=#{@@API_KEY}")
@@SOUNDS = JSON.parse(res)["sounds"] || {}
rescue => e
Rails.logger.error "error sending to pushover: #{e.inspect}"
end
@@SOUNDS = { "" => "Device default" }.merge(@@SOUNDS)
end
@@SOUNDS
end
def self.push(user, device, params)
if !@@API_KEY
return
end
2012-07-03 18:59:50 +02:00
begin
params[:message] = params[:message].to_s.match(/.{0,512}/m).to_s
if params[:message] == ""
params[:message] = "(No message)"
end
2012-07-03 18:59:50 +02:00
s = Sponge.new
s.fetch("https://api.pushover.net/1/messages.json", :post, {
:token => @@API_KEY,
:user => user,
:device => device
}.merge(params))
rescue => e
Rails.logger.error "error sending to pushover: #{e.inspect}"
end
end
end