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 => [