class UPnPDevice
Attributes
base_url[RW]
child_devices[RW]
services[RW]
Public Class Methods
new()
click to toggle source
# File lib/upnp_model.rb, line 55 def initialize @child_devices = [] @services = [] end
read(xml)
click to toggle source
# File lib/upnp_model.rb, line 157 def UPnPDevice.read(xml) doc = Nokogiri::XML(xml) doc.root.elements.each do |elem| if elem.name == 'specVersion' spec_version = UPnPSpecVersion.read_xml_node elem elsif elem.name == 'device' return UPnPDevice.read_xml_node elem end end nil end
read_xml_node(node)
click to toggle source
# File lib/upnp_model.rb, line 169 def UPnPDevice.read_xml_node(node) device = UPnPDevice.new node.elements.each do |elem| if elem.elements.empty? device[elem.name] = elem.text elsif elem.name == 'deviceList' elem.elements.each do |device_node| if device_node.name == 'device' device.child_devices << UPnPDevice.read_xml_node(device_node) end end elsif elem.name == 'serviceList' elem.elements.each do |service_node| if service_node.name == 'service' device.services << UPnPService.read_xml_node(service_node) end end end end device end
to_xml_doc(device)
click to toggle source
# File lib/upnp_model.rb, line 145 def UPnPDevice.to_xml_doc(device) root = XmlTag.new 'root' root.attributes['xmlns'] = 'urn:schemas-upnp-org:device-1-0' specVersion = root.append(XmlTag.new('specVersion')) specVersion.append(XmlTag.new('major')).append(XmlText.new(1)) specVersion.append(XmlTag.new('major')).append(XmlText.new(0)) root.append device.to_xml return '<?xml version="1.0" encoding="UTF-8"?>' + "\n#{root}" end
Public Instance Methods
all_devices()
click to toggle source
# File lib/upnp_model.rb, line 101 def all_devices devices = [] devices << self @child_devices.each do |device| devices += device.all_devices end return devices end
all_services()
click to toggle source
# File lib/upnp_model.rb, line 110 def all_services services = @services @child_devices.each do |device| services += device.all_services end return services end
all_usn()
click to toggle source
# File lib/upnp_model.rb, line 71 def all_usn usn_list = [] usn_list << usn @services.each do |service| usn_list << udn + '::' + service.service_type end @child_devices.each do |device| usn_list += device.all_usn end return usn_list end
get_device(type)
click to toggle source
# File lib/upnp_model.rb, line 83 def get_device(type) all_devices.each do |device| if device.device_type == type return device end end nil end
get_service(type)
click to toggle source
# File lib/upnp_model.rb, line 92 def get_service(type) all_services.each do |service| if service.service_type == type return service end end nil end
to_s()
click to toggle source
# File lib/upnp_model.rb, line 118 def to_s "UPnPDevice -- '#{friendly_name}' (#{udn})" end
to_xml()
click to toggle source
# File lib/upnp_model.rb, line 122 def to_xml device = XmlTag.new 'device' self.each { |k,v| device.append(XmlTag.new(k)).append(XmlText.new(v)) } if @services.any? serviceList = device.append XmlTag.new('serviceList') @services.each { |service| serviceList.append service.to_xml } end if @child_devices.any? deviceList = device.append XmlTag.new('deviceList') @child_devices.each { |device| deviceList.append device.to_xml } end return device.to_s end
usn()
click to toggle source
# File lib/upnp_model.rb, line 67 def usn return udn + '::' + device_type end