6cca9f64e5
fixes #120
51 lines
1.1 KiB
Ruby
51 lines
1.1 KiB
Ruby
class Pushover
|
|
cattr_accessor :API_KEY
|
|
|
|
# this needs to be overridden in config/initializers/production.rb
|
|
@@API_KEY = nil
|
|
|
|
@@SOUNDS = {}
|
|
def self.sounds
|
|
if !@@API_KEY
|
|
return @@SOUNDS
|
|
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
|
|
|
|
begin
|
|
params[:message] = params[:message].to_s.match(/.{0,512}/m).to_s
|
|
|
|
if params[:message] == ""
|
|
params[:message] = "(No message)"
|
|
end
|
|
|
|
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
|