spec/spec_helper.rb in rupnp-0.2.1 vs spec/spec_helper.rb in rupnp-0.2.2
- old
+ new
@@ -56,20 +56,20 @@
responder.send_data response
end
end
-def generate_xml_device_description(uuid, options={})
+def generate_device_description(uuid, options={})
opt = {
:version_major => 1,
:version_minor => 1,
:device_type => :base,
}.merge(options)
desc=<<EOD
<?xml version="1.0"?>
-<root xmlns="urn:schemas-upnp-org:device-1-0" configId="1">
+<root xmlns="urn:schemas-upnp-org:device-1-0" configId="23">
<specVersion>
<major>#{opt[:version_major]}</major>
<minor>#{opt[:version_minor]}</minor>
</specVersion>
<device>
@@ -82,16 +82,97 @@
if opt[:device_type] != :base
desc << <<EOD
<serviceList>
<service>
<serviceType>usrn:schemas-upnp-org:service:ContentDirectory:1</serviceType>
- <serviceId>urn:upnp-org:serviceId:</serviceId>
-
+ <serviceId>urn:upnp-org:serviceId:ContentDirectory</serviceId>
+ <SCPDURL>/cd/description.xml</SCPDURL>
+ <ControlURL>/cd/control</ControlURL>
+ <EventURL></EventURL>
</service>
</serviceList>
EOD
end
desc << " </device>\n</root>\n"
+end
+
+
+def generate_scpd(options={})
+ opt = {
+ :version_major => 1,
+ :version_minor => 1,
+ :nb_state_var => 1,
+ :define_action => false,
+ :send_event => false
+ }.merge(options)
+
+ scpd=<<EOD
+<?xml version="1.0"?>
+<scpd xmlns="urn:schemas-upnp-org:service-1-0" configId="23">
+ <specVersion>
+ <major>#{opt[:version_major]}</major>
+ <minor>#{opt[:version_minor]}</minor>
+ </specVersion>
+EOD
+
+ if opt[:define_action]
+ scpd << <<EOAL
+ <actionList>
+ <action>
+ <name>testAction</name>
+ <argumentList>
+ <argument>
+ <name>var1</name>
+ <direction>in</direction>
+ <relatedStateVariable>X_variableName1</relatedStateVariable>
+ </argument>
+ <argument>
+ <name>var2</name>
+ <direction>out</direction>
+ <retval/>
+ <relatedStateVariable>X_variableName2</relatedStateVariable>
+ </argument>
+ </argumentList>
+ </action>
+ </actionList>
+EOAL
+ end
+
+ scpd << ' <serviceStateTable>'
+ opt[:nb_state_var].times do |i|
+ scpd << <<EOSV
+ <stateVariable sendEvents="#{opt[:send_event] ? 'yes' : 'no'}">
+ <name>X_variableName#{i+1}</name>
+ <dataType>ui4</dataType>
+ <defaultValue>#{i}</defaultValue>
+ <allowedValueRange>
+ <minimum>0</minimum>
+ <maximum>#{64*(i+1) - 1}</maximum>
+ </allowedValueRange>
+ </stateVariable>
+EOSV
+ end
+ scpd << " </serviceStateTable>\n</scpd>\n"
+end
+
+
+def action_response(hash)
+ r = <<EOD
+<?xml version="1.0"?>
+<s:Envelope
+ xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
+ s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+ <s:Body>
+ <u:testActionResponse xmlns:u="urn:schemas-upnp-org:service:service:1">
+EOD
+
+ hash.each { |k, v| r << " <#{k}>#{v}</#{k}>\n"}
+
+ r << <<EOD
+ </u:testActionResponse>
+ </s:Body>
+</s:Envelope>
+EOD
end
NOTIFY_REGEX = {
:common => [