class Polycom::Pusher
Attributes
ip_address[RW]
password[RW]
username[RW]
Public Class Methods
new(args)
click to toggle source
# File lib/polycom/pusher.rb, line 10 def initialize(args) args.each do |k, v| instance_variable_set("@#{k}", v) unless v.nil? end end
Public Instance Methods
send(h)
click to toggle source
# File lib/polycom/pusher.rb, line 17 def send(h) priority = h.fetch(:priority, :critical).to_s.capitalize data = h.fetch(:data, nil) url = h.fetch(:url, nil) if data.nil? && url.nil? raise "Either :data or :url must be passed to this method" end push_data(priority, data) unless data.nil? push_url(priority, url) unless url.nil? end
Private Instance Methods
push_data(priority, data)
click to toggle source
# File lib/polycom/pusher.rb, line 33 def push_data(priority, data) resp = send_http "<PolycomIPPhone><Data priority=\"#{priority}\">#{data}</Data></PolycomIPPhone>" raise "Polycom phone at #{@ip_address} said: [#{resp.code}] #{resp.message}" unless resp.code == '200' end
push_url(priority, url)
click to toggle source
# File lib/polycom/pusher.rb, line 39 def push_url(priority, url) resp = send_http "<PolycomIPPhone><URL priority=\"#{priority}\">#{url}</URL></PolycomIPPhone>", true raise "Polycom phone at #{@ip_address} said: [#{resp.code}] #{resp.message}" unless resp.code == '200' end
send_http(data, url = false)
click to toggle source
# File lib/polycom/pusher.rb, line 45 def send_http(data, url = false) digest_auth = Net::HTTP::DigestAuth.new uri = URI.parse("http://#{@ip_address}/push") uri.user = @username uri.password = @password h = Net::HTTP.new uri.host, uri.port req = Net::HTTP::Post.new uri.request_uri res = h.request req auth = digest_auth.auth_header(uri, res['www-authenticate'], 'POST') req = Net::HTTP::Post.new(uri.request_uri) req.add_field 'Authorization', auth req.add_field 'Content-Type', 'application/x-com-polycom-spipx' if url req.body = data resp = h.request(req) end