class Druzy::Upnp::UpnpDevice
Attributes
device_list[R]
device_type[R]
friendly_name[R]
icon_list[R]
manufacturer[R]
manufacturer_url[R]
model_description[R]
model_name[R]
model_number[R]
model_url[R]
serial_number[R]
service_list[R]
udn[R]
upc[R]
url_base[R]
Public Class Methods
new(args)
click to toggle source
# File lib/druzy/upnp/upnp_device.rb, line 16 def initialize(args) if args[:ssdp_message] != nil mess = args[:ssdp_message] location=mess.split("\n").reject{|line| line==nil || line["LOCATION"]==nil}.first initialize(:location => location[location.index(" ")+1..location.size-2]) elsif args[:location] != nil uri = URI(args[:location]) xml=Net::HTTP.get(uri) xml_nok = Nokogiri::XML(xml) xml_nok.remove_namespaces! initialize(:uri => uri, :xml => Nokogiri::XML(xml_nok.xpath('root/device').to_s)) else uri = args[:uri] xml_nok = args[:xml] @url_base = uri.scheme+'://'+uri.host+":"+uri.port.to_s @device_type = xml_nok.xpath('device/deviceType').text @friendly_name = xml_nok.xpath('device/friendlyName').text @manufacturer = xml_nok.xpath('device/manufacturer').text @manufacturer_url = xml_nok.xpath('device/manufacturerURL').text @model_description = xml_nok.xpath('device/modelDescription').text @model_name = xml_nok.xpath('device/modelName').text @model_number = xml_nok.xpath('device/modelNumber').text @model_url = xml_nok.xpath('device/modelURL').text @serial_number = xml_nok.xpath('device/serialNumber').text @udn = xml_nok.xpath('device/UDN').text @upc = xml_nok.xpath('device/UPC').text @icon_list = xml_nok.xpath('device/iconList/icon/url').to_a.collect{|el| @url_base+el.text} @service_list = xml_nok.xpath('device/serviceList/service').to_a.collect{|el| UpnpService.new( :service_type => el.xpath("serviceType").text, :service_id => el.xpath("serviceId").text, :location => @url_base+el.xpath("SCPDURL").text, :control_url => @url_base+el.xpath("controlURL").text, :event_sub_url => @url_base+el.xpath("eventSubURL").text )} @service_list.each do |service| method_name = service.service_id[service.service_id.rindex(':')+1..-1] define_singleton_method(method_name.to_sym) do return service end end @device_list = xml_nok.xpath('device/deviceList/device').to_a.collect{|el| UpnpDevice.new( :uri => uri, :xml => Nokogiri::XML(el.to_s) )} end end