ruby_onvif_client 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 41d830293695b797d378c96f2ab41cec0d89bdd5
4
- data.tar.gz: af2b4022086bc5c5886029afa8908595b6681b52
3
+ metadata.gz: ab23cbb25cad70f098518423df54826d7a75c1ae
4
+ data.tar.gz: cc1e662e1b7e25b1c88535c7e2551e7ed0906a81
5
5
  SHA512:
6
- metadata.gz: 3e4eefa3f319eca2724e476cac2042f57a1890bbef6322163f38a0b0fff730401c1081de05164010f06ba2be77af360a33b365f485dc1a2bd6d539c9d5b3b8e3
7
- data.tar.gz: 121c7c082edb76d846e260f504db35e7874516156b9e2631f0013dd9f959926c2cc50ffe0d13dbe4c09d9c097c20d6b6c0e4770aab52137aac2ae4584602cba0
6
+ metadata.gz: 8c8b233a208a8e2570650ceba6be1bb42a1886cbb944b06c1d240c5ff6f192115ed05edb2405b6fed47d4fc07536e3b3fe001d5e4e2e897c68ca9e1c89788913
7
+ data.tar.gz: d273e1e94f21a0c000ec045fc87310ba1786eb6dcfe6e8413a0b5709f6e2b90683d7ddcd60f495f21bdfd56ea47c745f23ad2da07366570b80d8a25564dbe21d
@@ -1,4 +1,5 @@
1
1
  require_relative 'ruby_onvif_client/path'
2
2
  require_relative 'ruby_onvif_client/device_management'
3
3
  require_relative 'ruby_onvif_client/media'
4
+ require_relative 'ruby_onvif_client/ptz'
4
5
  require_relative 'ruby_onvif_client/device_discovery'
@@ -39,5 +39,12 @@ module ONVIF
39
39
  options[:namespaces] = namespaces
40
40
  Message.new options
41
41
  end
42
+ def create_ptz_onvif_message options = {}
43
+ namespaces = {
44
+ :'xmlns:wsdl' => "http://www.onvif.org/ver20/ptz/wsdl"
45
+ }.merge(options[:namespaces] || {})
46
+ options[:namespaces] = namespaces
47
+ Message.new options
48
+ end
42
49
  end
43
50
  end
@@ -14,7 +14,7 @@ module ONVIF
14
14
  xml.wsdl(:GetCapabilities) do
15
15
  unless options.nil?
16
16
  options.each do |option|
17
- xml.wsdl :Category, option["Category"]
17
+ xml.wsdl :Category, option[:Category]
18
18
  end
19
19
  end
20
20
  end
@@ -29,12 +29,12 @@ module ONVIF
29
29
  xml_media = xml_doc.xpath('//tt:Media')
30
30
  xml_ptz = xml_doc.xpath('//tt:PTZ')
31
31
  success_result = {}
32
- success_result["analytics"] = _get_analytics(xml_analytics) unless xml_analytics.nil?
33
- success_result["device"] = _get_device(xml_device) unless xml_device.nil?
34
- success_result["events"] = _get_events(xml_events) unless xml_events.nil?
35
- success_result["imaging"] = _get_imaging(xml_imaging) unless xml_imaging.nil?
36
- success_result["media"] = _get_media(xml_media) unless xml_media.nil?
37
- success_result["ptz"] = _get_ptz(xml_ptz) unless xml_ptz.nil?
32
+ success_result[:analytics] = _get_analytics(xml_analytics) unless xml_analytics.nil?
33
+ success_result[:device] = _get_device(xml_device) unless xml_device.nil?
34
+ success_result[:events] = _get_events(xml_events) unless xml_events.nil?
35
+ success_result[:imaging] = _get_imaging(xml_imaging) unless xml_imaging.nil?
36
+ success_result[:media] = _get_media(xml_media) unless xml_media.nil?
37
+ success_result[:ptz] = _get_ptz(xml_ptz) unless xml_ptz.nil?
38
38
  callback cb, success, success_result
39
39
  else
40
40
  callback cb, success, result
@@ -21,10 +21,10 @@ module ONVIF
21
21
  token: attribute(xml_doc, "token"),
22
22
  enabled: value(xml_doc, "tt:Enabled")
23
23
  }
24
- success_result["info"] = _get_info(xml_info) unless xml_info.nil?
25
- success_result["link"] = _get_link(xml_link) unless xml_link.nil?
26
- success_result["ipv4"] = _get_ipv_four(xml_ipv4) unless xml_ipv4.nil?
27
- success_result["ipv6"] = _get_ipv_six(xml_ipv6) unless xml_ipv6.nil?
24
+ success_result[:info] = _get_info(xml_info) unless xml_info.nil?
25
+ success_result[:link] = _get_link(xml_link) unless xml_link.nil?
26
+ success_result[:ipv4] = _get_ipv_four(xml_ipv4) unless xml_ipv4.nil?
27
+ success_result[:ipv6] = _get_ipv_six(xml_ipv6) unless xml_ipv6.nil?
28
28
  interfaces << success_result
29
29
  end
30
30
  callback cb, success, interfaces
@@ -47,20 +47,20 @@ module ONVIF
47
47
  oper_xml_doc = xml_link.at_xpath('tt:OperSettings')
48
48
  link = {}
49
49
  unless xml_doc.nil?
50
- link["admin_settings"] = {
50
+ link[:admin_settings] = {
51
51
  auto_negotiation: value(admin_xml_doc, "tt:AutoNegotiation"),
52
52
  speed: value(admin_xml_doc, "tt:Speed"),
53
53
  duplex: value(admin_xml_doc, "tt:Duplex")
54
54
  }
55
55
  end
56
56
  unless oper_xml_doc.nil?
57
- link["oper_settings"] = {
57
+ link[:oper_settings] = {
58
58
  auto_negotiation: value(oper_xml_doc, "tt:AutoNegotiation"),
59
59
  speed: value(oper_xml_doc, "tt:Speed"),
60
60
  duplex: value(oper_xml_doc, "tt:Duplex")
61
61
  }
62
62
  end
63
- link["interface_type"] = value(xml_link, "tt:InterfaceType") unless xml_link.at_xpath('tt:InterfaceType')
63
+ link[:interface_type] = value(xml_link, "tt:InterfaceType") unless xml_link.at_xpath('tt:InterfaceType')
64
64
  return link
65
65
  end
66
66
 
@@ -76,17 +76,17 @@ module ONVIF
76
76
  prefix_length: value(node, "tt:PrefixLength")
77
77
  }
78
78
  end
79
- config["manual"] = manual
80
- config["link_local"] = {
79
+ config[:manual] = manual
80
+ config[:link_local] = {
81
81
  address: value(link_local, "tt:Address"),
82
82
  prefix_length: value(link_local, "tt:PrefixLength")
83
83
  }
84
- config["form_dhcp"] = {
84
+ config[:form_dhcp] = {
85
85
  address: value(form_dhcp, "tt:Address"),
86
86
  prefix_length: value(form_dhcp, "tt:PrefixLength")
87
87
  }
88
- config["dhcp"] = value(xml_ipv_four, "tt:Config//tt:DHCP")
89
- ipv_four["config"] = config
88
+ config[:dhcp] = value(xml_ipv_four, "tt:Config//tt:DHCP")
89
+ ipv_four[:config] = config
90
90
  return ipv_four
91
91
  end
92
92
 
@@ -117,13 +117,13 @@ module ONVIF
117
117
  prefix_length: value(node, "tt:PrefixLength")
118
118
  }
119
119
  end
120
- config["manual"] = manual
121
- config["link_local"] = link_local
122
- config["form_dhcp"] = form_dhcp
123
- config["form_ra"] = form_ra
124
- config["ara"] = value(xml_ipv_six, "tt:AcceptRouterAdvert")
125
- config["dhcp"] = value(xml_ipv_six, "tt:DHCP")
126
- ipv_six["config"] = config
120
+ config[:manual] = manual
121
+ config[:link_local] = link_local
122
+ config[:form_dhcp] = form_dhcp
123
+ config[:form_ra] = form_ra
124
+ config[:ara] = value(xml_ipv_six, "tt:AcceptRouterAdvert")
125
+ config[:dhcp] = value(xml_ipv_six, "tt:DHCP")
126
+ ipv_six[:config] = config
127
127
  return ipv_six
128
128
  end
129
129
  end
@@ -47,8 +47,8 @@ module ONVIF
47
47
  }
48
48
  xml_utc_time = xml_doc.at_xpath('//tt:UTCDateTime')
49
49
  xml_local_time = xml_doc.at_xpath('//tt:LocalDateTime')
50
- date_time["utc_date_time"] = utc_data_time unless xml_utc_time.nil?
51
- date_time["local_date_time"] = local_date_time unl unless xml_local_time.nil?
50
+ date_time[:utc_date_time] = utc_data_time unless xml_utc_time.nil?
51
+ date_time[:local_date_time] = local_date_time unl unless xml_local_time.nil?
52
52
  callback cb, success, date_time
53
53
  else
54
54
  callback cb, success, result
@@ -37,35 +37,35 @@ module ONVIF
37
37
  message = Message.new namespaces: {:'xmlns:sch' => 'http://www.onvif.org/ver10/schema'}
38
38
  message.body = ->(xml) do
39
39
  xml.wsdl(:SetNetworkInterfaces) do
40
- xml.wsdl :InterfaceToken, network_interface["interface_token"]
40
+ xml.wsdl :InterfaceToken, network_interface[:interface_token]
41
41
  xml.wsdl :NetworkInterface do
42
- xml.sch :Enabled, network_interface["nwif"]["enabled"]
42
+ xml.sch :Enabled, network_interface[:nwif][:enabled]
43
43
  xml.sch :Link do
44
- xml.sch :AutoNegotiation, network_interface["nwif"]["link"]["auto_negotiation"]
45
- xml.sch :Speed, network_interface["nwif"]["link"]["speed"]
46
- xml.sch :Duplex, network_interface["nwif"]["link"]["duplex"]
44
+ xml.sch :AutoNegotiation, network_interface[:nwif][:link][:auto_negotiation]
45
+ xml.sch :Speed, network_interface[:nwif][:link][:speed]
46
+ xml.sch :Duplex, network_interface[:nwif][:link][:duplex]
47
47
  end
48
- xml.sch :MTU, network_interface["nwif"]["mtu"]
48
+ xml.sch :MTU, network_interface[:nwif][:mtu]
49
49
  xml.sch :IPv4 do
50
- xml.sch :Enabled, network_interface["nwif"]["ipv4"]["enabled"]
51
- network_interface["nwif"]["ipv4"]["manual"].each do |manual|
50
+ xml.sch :Enabled, network_interface[:nwif][:ipv4][:enabled]
51
+ network_interface[:nwif][:ipv4][:manual].each do |manual|
52
52
  xml.sch :Manual do
53
- xml.sch :Address, manual["address"]
54
- xml.sch :PrefixLength, manual["prefix_length"]
53
+ xml.sch :Address, manual[:address]
54
+ xml.sch :PrefixLength, manual[:prefix_length]
55
55
  end
56
56
  end
57
- xml.sch :DHCP, network_interface["nwif"]["ipv4"]["dhcp"]
57
+ xml.sch :DHCP, network_interface[:nwif][:ipv4][:dhcp]
58
58
  end
59
59
  xml.sch :IPv6 do
60
- xml.sch :Enabled, network_interface["nwif"]["ipv6"]["enabled"]
61
- xml.sch :AcceptRouterAdvert, network_interface["nwif"]["ipv6"]["ara"]
62
- network_interface["nwif"]["ipv6"]["manual"].each do |manual|
60
+ xml.sch :Enabled, network_interface[:nwif][:ipv6][:enabled]
61
+ xml.sch :AcceptRouterAdvert, network_interface[:nwif][:ipv6][:ara]
62
+ network_interface[:nwif][:ipv6][:manual].each do |manual|
63
63
  xml.sch :Manual do
64
- xml.sch :Address, manual["address"]
65
- xml.sch :PrefixLength, manual["prefix_length"]
64
+ xml.sch :Address, manual[:address]
65
+ xml.sch :PrefixLength, manual[:prefix_length]
66
66
  end
67
67
  end
68
- xml.sch :DHCP, network_interface["nwif"]["ipv6"]["dhcp"]
68
+ xml.sch :DHCP, network_interface[:nwif][:ipv6][:dhcp]
69
69
  end
70
70
 
71
71
  end
@@ -19,21 +19,21 @@ module ONVIF
19
19
  message = Message.new namespaces: {:'xmlns:sch' => 'http://www.onvif.org/ver10/schema'}
20
20
  message.body = ->(xml) do
21
21
  xml.wsdl(:SetSystemDateAndTime) do
22
- xml.wsdl :DateTimeType, system_date_time["type"]
23
- xml.wsdl :DaylightSavings, system_date_time["ds"]
22
+ xml.wsdl :DateTimeType, system_date_time[:type]
23
+ xml.wsdl :DaylightSavings, system_date_time[:ds]
24
24
  xml.wsdl(:TimeZone) do
25
- xml.sch :TZ, system_date_time["time_zone_tz"]
25
+ xml.sch :TZ, system_date_time[:time_zone_tz]
26
26
  end
27
27
  xml.wsdl(:TimeZone) do
28
28
  xml.sch :Time do
29
- xml.sch :Hour, system_date_time["hour"]
30
- xml.sch :Minute, system_date_time["minute"]
31
- xml.sch :Second, system_date_time["second"]
29
+ xml.sch :Hour, system_date_time[:hour]
30
+ xml.sch :Minute, system_date_time[:minute]
31
+ xml.sch :Second, system_date_time[:second]
32
32
  end
33
33
  xml.sch :Date do
34
- xml.sch :Year, system_date_time["year"]
35
- xml.sch :Month, system_date_time["month"]
36
- xml.sch :Day, system_date_time["day"]
34
+ xml.sch :Year, system_date_time[:year]
35
+ xml.sch :Month, system_date_time[:month]
36
+ xml.sch :Day, system_date_time[:day]
37
37
  end
38
38
  end
39
39
  end
@@ -12,8 +12,8 @@ module ONVIF
12
12
  message = create_media_onvif_message
13
13
  message.body = ->(xml) do
14
14
  xml.wsdl(:GetAudioEncoderConfigurationOptions) do
15
- xml.wsdl :ConfigurationToken, options["c_token"]
16
- xml.wsdl :ProfileToken, options["p_token"]
15
+ xml.wsdl :ConfigurationToken, options[:c_token]
16
+ xml.wsdl :ProfileToken, options[:p_token]
17
17
  end
18
18
  end
19
19
  send_message message do |success, result|
@@ -30,7 +30,7 @@ module ONVIF
30
30
  items: item.content
31
31
  }
32
32
  end
33
- this_options["bitrate_list"] = bitrate_list
33
+ this_options[:bitrate_list] = bitrate_list
34
34
  end
35
35
  sample_rate = node.at_xpath("tt:SampleRateList")
36
36
  unless sample_rate.nil?
@@ -40,7 +40,7 @@ module ONVIF
40
40
  items: item.content
41
41
  }
42
42
  end
43
- this_options["sample_rate_list"] = sample_rate_list
43
+ this_options[:sample_rate_list] = sample_rate_list
44
44
  end
45
45
 
46
46
 
@@ -30,13 +30,13 @@ module ONVIF
30
30
  fixed: attribute(root_node, "fixed"),
31
31
  extension: ""
32
32
  }
33
- profile["video_source_configuration"] = _get_video_source_configuration(video_source) unless video_source.nil?
34
- profile["audio_source_configuration"] = _get_audio_source_configuration(audio_source) unless audio_source.nil?
35
- profile["video_encoder_configuration"] = _get_video_encoder_configuration(video_encoder) unless video_encoder.nil?
36
- profile["audio_encoder_configuration"] = _get_audio_encoder_configuration(audio_encoder) unless audio_encoder.nil?
37
- profile["video_analytics_configuration"] = _get_video_analytics_configuration(video_analytics) unless video_analytics.nil?
38
- profile["ptz_configuration"] = _get_ptz_configuration(ptz) unless ptz.nil?
39
- profile["metadata_configuration"] = _get_metadata_configuration(metadata) unless metadata.nil?
33
+ profile[:video_source_configuration] = _get_video_source_configuration(video_source) unless video_source.nil?
34
+ profile[:audio_source_configuration] = _get_audio_source_configuration(audio_source) unless audio_source.nil?
35
+ profile[:video_encoder_configuration] = _get_video_encoder_configuration(video_encoder) unless video_encoder.nil?
36
+ profile[:audio_encoder_configuration] = _get_audio_encoder_configuration(audio_encoder) unless audio_encoder.nil?
37
+ profile[:video_analytics_configuration] = _get_video_analytics_configuration(video_analytics) unless video_analytics.nil?
38
+ profile[:ptz_configuration] = _get_ptz_configuration(ptz) unless ptz.nil?
39
+ profile[:metadata_configuration] = _get_metadata_configuration(metadata) unless metadata.nil?
40
40
  callback cb, success, profile
41
41
  else
42
42
  callback cb, success, result
@@ -76,9 +76,9 @@ module ONVIF
76
76
 
77
77
  def _get_video_source_configuration parent_node
78
78
  configuration = _get_public_sector(parent_node)
79
- configuration["source_token"] = value(parent_node, "tt:SourceToken")
79
+ configuration[:source_token] = value(parent_node, "tt:SourceToken")
80
80
  bounds = parent_node.at_xpath("tt:Bounds")
81
- configuration["bounds"] = {
81
+ configuration[:bounds] = {
82
82
  x: attribute(bounds, "x"),
83
83
  y: attribute(bounds, "y"),
84
84
  width: attribute(bounds, "width"),
@@ -89,47 +89,47 @@ module ONVIF
89
89
 
90
90
  def _get_audio_source_configuration parent_node
91
91
  configuration = _get_public_sector(parent_node)
92
- configuration["source_token"] = value(parent_node, "tt:SourceToken")
92
+ configuration[:source_token] = value(parent_node, "tt:SourceToken")
93
93
  return configuration
94
94
  end
95
95
 
96
96
  def _get_video_encoder_configuration parent_node
97
97
  configuration = _get_public_sector(parent_node)
98
- configuration["encoding"] = value(parent_node, "tt:Encoding")
99
- configuration["resolution"] = {
98
+ configuration[:encoding] = value(parent_node, "tt:Encoding")
99
+ configuration[:resolution] = {
100
100
  width: value(_get_node(parent_node, "tt:Resolution"), "tt:Width"),
101
101
  height: value(_get_node(parent_node, "tt:Resolution"), "tt:Height")
102
102
  }
103
- configuration["quality"] = value(parent_node, "tt:Quality")
104
- configuration["rate_control"] = {
103
+ configuration[:quality] = value(parent_node, "tt:Quality")
104
+ configuration[:rate_control] = {
105
105
  frame_rate_limit: value(_get_node(parent_node, "tt:RateControl"), "tt:FrameRateLimit"),
106
106
  encoding_interval: value(_get_node(parent_node, "tt:RateControl"), "tt:EncodingInterval"),
107
107
  bitrate_limit: value(_get_node(parent_node, "tt:RateControl"), "tt:BitrateLimit")
108
108
  }
109
109
  unless parent_node.at_xpath('//tt:MPEG4').nil?
110
- configuration["MPEG4"] = {
110
+ configuration[:MPEG4] = {
111
111
  gov_length: value(_get_node(parent_node, "tt:MPEG4"), "tt:GovLength"),
112
112
  mpeg4_profile: value(_get_node(parent_node, "tt:MPEG4"), "tt:Mpeg4Profile")
113
113
  }
114
114
  end
115
115
  unless parent_node.at_xpath('//tt:H264').nil?
116
- configuration["H264"] = {
116
+ configuration[:H264] = {
117
117
  gov_length: value(_get_node(parent_node, "tt:H264"), "tt:GovLength"),
118
118
  h264_profile: value(_get_node(parent_node, "tt:H264"), "tt:H264Profile")
119
119
  }
120
120
  end
121
- configuration["multicast"] = _get_multicast(parent_node)
122
- configuration["session_timeout"] = value(parent_node, "tt:SessionTimeout")
121
+ configuration[:multicast] = _get_multicast(parent_node)
122
+ configuration[:session_timeout] = value(parent_node, "tt:SessionTimeout")
123
123
  return configuration
124
124
  end
125
125
 
126
126
  def _get_audio_encoder_configuration parent_node
127
127
  configuration = _get_public_sector(parent_node)
128
- configuration["encoding"] = value(parent_node, "tt:Encoding")
129
- configuration["bitrate"] = value(parent_node, "tt:Bitrate")
130
- configuration["sample_rate"] = value(parent_node, "tt:SampleRate")
131
- configuration["multicast"] = _get_multicast(parent_node)
132
- configuration["session_timeout"] = value(parent_node, "tt:SessionTimeout")
128
+ configuration[:encoding] = value(parent_node, "tt:Encoding")
129
+ configuration[:bitrate] = value(parent_node, "tt:Bitrate")
130
+ configuration[:sample_rate] = value(parent_node, "tt:SampleRate")
131
+ configuration[:multicast] = _get_multicast(parent_node)
132
+ configuration[:session_timeout] = value(parent_node, "tt:SessionTimeout")
133
133
  return configuration
134
134
  end
135
135
 
@@ -150,11 +150,11 @@ module ONVIF
150
150
  parameters: _get_parameters(node)
151
151
  }
152
152
  end
153
- configuration["analytics_engine_configuration"] = {
153
+ configuration[:analytics_engine_configuration] = {
154
154
  analytics_module: analytics_module,
155
155
  extension: ""
156
156
  }
157
- configuration["rule_engine_configuration"] = {
157
+ configuration[:rule_engine_configuration] = {
158
158
  rule: rule,
159
159
  extension: ""
160
160
  }
@@ -163,16 +163,16 @@ module ONVIF
163
163
 
164
164
  def _get_ptz_configuration parent_node
165
165
  configuration = _get_public_sector(parent_node)
166
- configuration["node_token"] = value(parent_node, "tt:NodeToken")
167
- configuration["default_absolute_pant_tilt_position_space"] = value(parent_node, "tt:DefaultAbsolutePantTiltPositionSpace")
168
- configuration["default_absolute_zoom_position_space"] = value(parent_node, "tt:DefaultAbsoluteZoomPositionSpace")
169
- configuration["default_relative_pan_tilt_translation_space"] = value(parent_node, "tt:DefaultRelativePanTiltTranslationSpace")
170
- configuration["default_relative_zoom_translation_space"] = value(parent_node, "tt:DefaultRelativeZoomTranslationSpace")
171
- configuration["default_continuous_pan_tilt_velocity_space"] = value(parent_node, "tt:DefaultContinuousPanTiltVelocitySpace")
172
- configuration["default_continuous_zoom_velocity_space"] = value(parent_node, "tt:DefaultContinuousZoomVelocitySpace")
166
+ configuration[:node_token] = value(parent_node, "tt:NodeToken")
167
+ configuration[:default_absolute_pant_tilt_position_space] = value(parent_node, "tt:DefaultAbsolutePantTiltPositionSpace")
168
+ configuration[:default_absolute_zoom_position_space] = value(parent_node, "tt:DefaultAbsoluteZoomPositionSpace")
169
+ configuration[:default_relative_pan_tilt_translation_space] = value(parent_node, "tt:DefaultRelativePanTiltTranslationSpace")
170
+ configuration[:default_relative_zoom_translation_space] = value(parent_node, "tt:DefaultRelativeZoomTranslationSpace")
171
+ configuration[:default_continuous_pan_tilt_velocity_space] = value(parent_node, "tt:DefaultContinuousPanTiltVelocitySpace")
172
+ configuration[:default_continuous_zoom_velocity_space] = value(parent_node, "tt:DefaultContinuousZoomVelocitySpace")
173
173
  pan_tilt = _get_node(parent_node,"//tt:DefaultPTZSpeed//tt:PanTilt")
174
174
  zoom = _get_node(parent_node,"//tt:DefaultPTZSpeed//tt:Zoom")
175
- configuration["default_ptz_speed"] = {
175
+ configuration[:default_ptz_speed] = {
176
176
  pan_tilt:{
177
177
  x: attribute(pan_tilt, "x"),
178
178
  y: attribute(pan_tilt, "y"),
@@ -183,37 +183,37 @@ module ONVIF
183
183
  space: attribute(zoom, "space")
184
184
  }
185
185
  }
186
- configuration["fefault_ptz_timeout"] = value(parent_node, "tt:DefaultPTZTimeout")
187
- configuration["pan_tilt_limits"] = {
186
+ configuration[:fefault_ptz_timeout] = value(parent_node, "tt:DefaultPTZTimeout")
187
+ configuration[:pan_tilt_limits] = {
188
188
  range: {
189
189
  uri: value(_get_node(parent_node, "tt:PanTiltLimits//tt:Range"), "tt:URI"),
190
190
  x_range: _get_min_max(_get_node(parent_node,"tt:PanTiltLimits//tt:Range"), "tt:XRange"),
191
191
  y_range: _get_min_max(_get_node(parent_node,"tt:PanTiltLimits//tt:Range"), "tt:YRange")
192
192
  }
193
193
  }
194
- configuration["zoom_limits"] = {
194
+ configuration[:zoom_limits] = {
195
195
  range: {
196
196
  uri: value(_get_node(parent_node, "tt:PanTiltLimits//tt:Range"), "tt:URI"),
197
197
  x_range: _get_min_max(_get_node(parent_node,"tt:PanTiltLimits//tt:Range"), "tt:XRange"),
198
198
  }
199
199
  }
200
- configuration["extension"] = ""
200
+ configuration[:extension] = ""
201
201
  return configuration
202
202
  end
203
203
 
204
204
  def _get_metadata_configuration parent_node
205
205
  configuration = _get_public_sector(parent_node)
206
- configuration["ptz_status"] = {
206
+ configuration[:ptz_status] = {
207
207
  status: value(_get_node(parent_node, "tt:PTZStatus"), "tt:Status"),
208
208
  sosition: value(_get_node(parent_node, "tt:PTZStatus"), "tt:Position")
209
209
  }
210
- configuration["events"] = {
210
+ configuration[:events] = {
211
211
  filter: value(_get_node(parent_node, "tt:Events"), "tt:Filter"),
212
212
  subscription_policy: value(_get_node(parent_node, "tt:Events"), "tt:SubscriptionPolicy")
213
213
  }
214
- configuration["analytics"] = value(parent_node, "tt:Analytics")
215
- configuration["multicast"] = _get_multicast(parent_node)
216
- configuration["session_timeout"] = value(parent_node, "tt:SessionTimeout")
214
+ configuration[:analytics] = value(parent_node, "tt:Analytics")
215
+ configuration[:multicast] = _get_multicast(parent_node)
216
+ configuration[:session_timeout] = value(parent_node, "tt:SessionTimeout")
217
217
  unless parent_node.at_xpath("tt:AnalyticsEngineConfiguration//tt:AnalyticsModule").nil?
218
218
  analytics_module = []
219
219
  parent_node.at_xpath("tt:AnalyticsEngineConfiguration//tt:AnalyticsModule").each do |node|
@@ -223,12 +223,12 @@ module ONVIF
223
223
  parameters: _get_parameters(node)
224
224
  }
225
225
  end
226
- configuration["analytics_engine_configuration"] = {
226
+ configuration[:analytics_engine_configuration] = {
227
227
  analytics_module: analytics_module,
228
228
  extension: ""
229
229
  }
230
230
  end
231
- configuration["extension"] = ""
231
+ configuration[:extension] = ""
232
232
  return configuration
233
233
  end
234
234
 
@@ -26,13 +26,13 @@ module ONVIF
26
26
  fixed: attribute(root_node, "fixed"),
27
27
  extension: ""
28
28
  }
29
- success_result["video_source_configuration"] = _get_video_source_configuration(video_source) unless video_source.nil?
30
- success_result["audio_source_configuration"] = _get_audio_source_configuration(audio_source) unless audio_source.nil?
31
- success_result["video_encoder_configuration"] = _get_video_encoder_configuration(video_encoder) unless video_encoder.nil?
32
- success_result["audio_encoder_configuration"] = _get_audio_encoder_configuration(audio_encoder) unless audio_encoder.nil?
33
- success_result["video_analytics_configuration"] = _get_video_analytics_configuration(video_analytics) unless video_analytics.nil?
34
- success_result["ptz_configuration"] = _get_ptz_configuration(ptz) unless ptz.nil?
35
- success_result["metadata_configuration"] = _get_metadata_configuration(metadata) unless metadata.nil?
29
+ success_result[:video_source_configuration] = _get_video_source_configuration(video_source) unless video_source.nil?
30
+ success_result[:audio_source_configuration] = _get_audio_source_configuration(audio_source) unless audio_source.nil?
31
+ success_result[:video_encoder_configuration] = _get_video_encoder_configuration(video_encoder) unless video_encoder.nil?
32
+ success_result[:audio_encoder_configuration] = _get_audio_encoder_configuration(audio_encoder) unless audio_encoder.nil?
33
+ success_result[:video_analytics_configuration] = _get_video_analytics_configuration(video_analytics) unless video_analytics.nil?
34
+ success_result[:ptz_configuration] = _get_ptz_configuration(ptz) unless ptz.nil?
35
+ success_result[:metadata_configuration] = _get_metadata_configuration(metadata) unless metadata.nil?
36
36
  profiles << success_result
37
37
  end
38
38
  callback cb, success, profiles
@@ -74,9 +74,9 @@ module ONVIF
74
74
 
75
75
  def _get_video_source_configuration parent_node
76
76
  configuration = _get_public_sector(parent_node)
77
- configuration["source_token"] = value(parent_node, "tt:SourceToken")
77
+ configuration[:source_token] = value(parent_node, "tt:SourceToken")
78
78
  bounds = parent_node.at_xpath("tt:Bounds")
79
- configuration["bounds"] = {
79
+ configuration[:bounds] = {
80
80
  x: attribute(bounds, "x"),
81
81
  y: attribute(bounds, "y"),
82
82
  width: attribute(bounds, "width"),
@@ -87,47 +87,47 @@ module ONVIF
87
87
 
88
88
  def _get_audio_source_configuration parent_node
89
89
  configuration = _get_public_sector(parent_node)
90
- configuration["source_token"] = value(parent_node, "tt:SourceToken")
90
+ configuration[:source_token] = value(parent_node, "tt:SourceToken")
91
91
  return configuration
92
92
  end
93
93
 
94
94
  def _get_video_encoder_configuration parent_node
95
95
  configuration = _get_public_sector(parent_node)
96
- configuration["encoding"] = value(parent_node, "tt:Encoding")
97
- configuration["resolution"] = {
96
+ configuration[:encoding] = value(parent_node, "tt:Encoding")
97
+ configuration[:resolution] = {
98
98
  width: value(_get_node(parent_node, "tt:Resolution"), "tt:Width"),
99
99
  height: value(_get_node(parent_node, "tt:Resolution"), "tt:Height")
100
100
  }
101
- configuration["quality"] = value(parent_node, "tt:Quality")
102
- configuration["rate_control"] = {
101
+ configuration[:quality] = value(parent_node, "tt:Quality")
102
+ configuration[:rate_control] = {
103
103
  frame_rate_limit: value(_get_node(parent_node, "tt:RateControl"), "tt:FrameRateLimit"),
104
104
  encoding_interval: value(_get_node(parent_node, "tt:RateControl"), "tt:EncodingInterval"),
105
105
  bitrate_limit: value(_get_node(parent_node, "tt:RateControl"), "tt:BitrateLimit")
106
106
  }
107
107
  unless parent_node.at_xpath('//tt:MPEG4').nil?
108
- configuration["MPEG4"] = {
108
+ configuration[:MPEG4] = {
109
109
  gov_length: value(_get_node(parent_node, "tt:MPEG4"), "tt:GovLength"),
110
110
  mpeg4_profile: value(_get_node(parent_node, "tt:MPEG4"), "tt:Mpeg4Profile")
111
111
  }
112
112
  end
113
113
  unless parent_node.at_xpath('//tt:H264').nil?
114
- configuration["H264"] = {
114
+ configuration[:H264] = {
115
115
  gov_length: value(_get_node(parent_node, "tt:H264"), "tt:GovLength"),
116
116
  h264_profile: value(_get_node(parent_node, "tt:H264"), "tt:H264Profile")
117
117
  }
118
118
  end
119
- configuration["multicast"] = _get_multicast(parent_node)
120
- configuration["session_timeout"] = value(parent_node, "tt:SessionTimeout")
119
+ configuration[:multicast] = _get_multicast(parent_node)
120
+ configuration[:session_timeout] = value(parent_node, "tt:SessionTimeout")
121
121
  return configuration
122
122
  end
123
123
 
124
124
  def _get_audio_encoder_configuration parent_node
125
125
  configuration = _get_public_sector(parent_node)
126
- configuration["encoding"] = value(parent_node, "tt:Encoding")
127
- configuration["bitrate"] = value(parent_node, "tt:Bitrate")
128
- configuration["sample_rate"] = value(parent_node, "tt:SampleRate")
129
- configuration["multicast"] = _get_multicast(parent_node)
130
- configuration["session_timeout"] = value(parent_node, "tt:SessionTimeout")
126
+ configuration[:encoding] = value(parent_node, "tt:Encoding")
127
+ configuration[:bitrate] = value(parent_node, "tt:Bitrate")
128
+ configuration[:sample_rate] = value(parent_node, "tt:SampleRate")
129
+ configuration[:multicast] = _get_multicast(parent_node)
130
+ configuration[:session_timeout] = value(parent_node, "tt:SessionTimeout")
131
131
  return configuration
132
132
  end
133
133
 
@@ -148,11 +148,11 @@ module ONVIF
148
148
  parameters: _get_parameters(node)
149
149
  }
150
150
  end
151
- configuration["analytics_engine_configuration"] = {
151
+ configuration[:analytics_engine_configuration] = {
152
152
  analytics_module: analytics_module,
153
153
  extension: ""
154
154
  }
155
- configuration["rule_engine_configuration"] = {
155
+ configuration[:rule_engine_configuration] = {
156
156
  rule: rule,
157
157
  extension: ""
158
158
  }
@@ -161,16 +161,16 @@ module ONVIF
161
161
 
162
162
  def _get_ptz_configuration parent_node
163
163
  configuration = _get_public_sector(parent_node)
164
- configuration["node_token"] = value(parent_node, "tt:NodeToken")
165
- configuration["default_absolute_pant_tilt_position_space"] = value(parent_node, "tt:DefaultAbsolutePantTiltPositionSpace")
166
- configuration["default_absolute_zoom_position_space"] = value(parent_node, "tt:DefaultAbsoluteZoomPositionSpace")
167
- configuration["default_relative_pan_tilt_translation_space"] = value(parent_node, "tt:DefaultRelativePanTiltTranslationSpace")
168
- configuration["default_relative_zoom_translation_space"] = value(parent_node, "tt:DefaultRelativeZoomTranslationSpace")
169
- configuration["default_continuous_pan_tilt_velocity_space"] = value(parent_node, "tt:DefaultContinuousPanTiltVelocitySpace")
170
- configuration["default_continuous_zoom_velocity_space"] = value(parent_node, "tt:DefaultContinuousZoomVelocitySpace")
164
+ configuration[:node_token] = value(parent_node, "tt:NodeToken")
165
+ configuration[:default_absolute_pant_tilt_position_space] = value(parent_node, "tt:DefaultAbsolutePantTiltPositionSpace")
166
+ configuration[:default_absolute_zoom_position_space] = value(parent_node, "tt:DefaultAbsoluteZoomPositionSpace")
167
+ configuration[:default_relative_pan_tilt_translation_space] = value(parent_node, "tt:DefaultRelativePanTiltTranslationSpace")
168
+ configuration[:default_relative_zoom_translation_space] = value(parent_node, "tt:DefaultRelativeZoomTranslationSpace")
169
+ configuration[:default_continuous_pan_tilt_velocity_space] = value(parent_node, "tt:DefaultContinuousPanTiltVelocitySpace")
170
+ configuration[:default_continuous_zoom_velocity_space] = value(parent_node, "tt:DefaultContinuousZoomVelocitySpace")
171
171
  pan_tilt = _get_node(parent_node,"//tt:DefaultPTZSpeed//tt:PanTilt")
172
172
  zoom = _get_node(parent_node,"//tt:DefaultPTZSpeed//tt:Zoom")
173
- configuration["default_ptz_speed"] = {
173
+ configuration[:default_ptz_speed] = {
174
174
  pan_tilt:{
175
175
  x: attribute(pan_tilt, "x"),
176
176
  y: attribute(pan_tilt, "y"),
@@ -181,37 +181,37 @@ module ONVIF
181
181
  space: attribute(zoom, "space")
182
182
  }
183
183
  }
184
- configuration["fefault_ptz_timeout"] = value(parent_node, "tt:DefaultPTZTimeout")
185
- configuration["pan_tilt_limits"] = {
184
+ configuration[:fefault_ptz_timeout] = value(parent_node, "tt:DefaultPTZTimeout")
185
+ configuration[:pan_tilt_limits] = {
186
186
  range: {
187
187
  uri: value(_get_node(parent_node, "tt:PanTiltLimits//tt:Range"), "tt:URI"),
188
188
  x_range: _get_min_max(_get_node(parent_node,"tt:PanTiltLimits//tt:Range"), "tt:XRange"),
189
189
  y_range: _get_min_max(_get_node(parent_node,"tt:PanTiltLimits//tt:Range"), "tt:YRange")
190
190
  }
191
191
  }
192
- configuration["zoom_limits"] = {
192
+ configuration[:zoom_limits] = {
193
193
  range: {
194
194
  uri: value(_get_node(parent_node, "tt:PanTiltLimits//tt:Range"), "tt:URI"),
195
195
  x_range: _get_min_max(_get_node(parent_node,"tt:PanTiltLimits//tt:Range"), "tt:XRange"),
196
196
  }
197
197
  }
198
- configuration["extension"] = ""
198
+ configuration[:extension] = ""
199
199
  return configuration
200
200
  end
201
201
 
202
202
  def _get_metadata_configuration parent_node
203
203
  configuration = _get_public_sector(parent_node)
204
- configuration["ptz_status"] = {
204
+ configuration[:ptz_status] = {
205
205
  status: value(_get_node(parent_node, "tt:PTZStatus"), "tt:Status"),
206
206
  sosition: value(_get_node(parent_node, "tt:PTZStatus"), "tt:Position")
207
207
  }
208
- configuration["events"] = {
208
+ configuration[:events] = {
209
209
  filter: value(_get_node(parent_node, "tt:Events"), "tt:Filter"),
210
210
  subscription_policy: value(_get_node(parent_node, "tt:Events"), "tt:SubscriptionPolicy")
211
211
  }
212
- configuration["analytics"] = value(parent_node, "tt:Analytics")
213
- configuration["multicast"] = _get_multicast(parent_node)
214
- configuration["session_timeout"] = value(parent_node, "tt:SessionTimeout")
212
+ configuration[:analytics] = value(parent_node, "tt:Analytics")
213
+ configuration[:multicast] = _get_multicast(parent_node)
214
+ configuration[:session_timeout] = value(parent_node, "tt:SessionTimeout")
215
215
  unless parent_node.at_xpath("tt:AnalyticsEngineConfiguration//tt:AnalyticsModule").nil?
216
216
  analytics_module = []
217
217
  parent_node.at_xpath("tt:AnalyticsEngineConfiguration//tt:AnalyticsModule").each do |node|
@@ -221,12 +221,12 @@ module ONVIF
221
221
  parameters: _get_parameters(node)
222
222
  }
223
223
  end
224
- configuration["analytics_engine_configuration"] = {
224
+ configuration[:analytics_engine_configuration] = {
225
225
  analytics_module: analytics_module,
226
226
  extension: ""
227
227
  }
228
228
  end
229
- configuration["extension"] = ""
229
+ configuration[:extension] = ""
230
230
  return configuration
231
231
  end
232
232
 
@@ -21,19 +21,19 @@ module ONVIF
21
21
  message.body = ->(xml) do
22
22
  xml.wsdl(:GetStreamUri) do
23
23
  xml.wsdl(:StreamSetup) do
24
- xml.sch :Stream, options["stream_setup"]["stream"]
24
+ xml.sch :Stream, options[:stream_setup][:stream]
25
25
  xml.sch :Transport do
26
- xml.sch :Protocol, options["stream_setup"]["transport"]["protocol"]
26
+ xml.sch :Protocol, options[:stream_setup][:transport][:protocol]
27
27
  xml.sch :Tunnel do
28
- tunnel = options["stream_setup"]["transport"]["tunnel"]
28
+ tunnel = options[:stream_setup][:transport][:tunnel]
29
29
  unless tunnel.nil?
30
- xml.sch :Protocol,options["stream_setup"]["transport"]["tunnel"]["protocol"]
31
- xml.sch :Tunnel,options["stream_setup"]["transport"]["tunnel"]["tunnel"]
30
+ xml.sch :Protocol,options[:stream_setup][:transport][:tunnel][:protocol]
31
+ xml.sch :Tunnel,options[:stream_setup][:transport][:tunnel][:tunnel]
32
32
  end
33
33
  end
34
34
  end
35
35
  end
36
- xml.wsdl :ProfileToken, options["profile_token"]
36
+ xml.wsdl :ProfileToken, options[:profile_token]
37
37
  end
38
38
  end
39
39
  send_message message do |success, result|
@@ -44,13 +44,13 @@ module ONVIF
44
44
  session_timeout: value(xml_doc, "//tt:SessionTimeout")
45
45
  }
46
46
  unless xml_doc.at_xpath('//tt:MPEG4').nil?
47
- configuration["mpeg4"] = {
47
+ configuration[:mpeg4] = {
48
48
  gov_length: value(_get_node(xml_doc, "//tt:MPEG4"), "//tt:GovLength"),
49
49
  mpeg4_profile: value(_get_node(xml_doc, "//tt:MPEG4"), "//tt:Mpeg4Profile")
50
50
  }
51
51
  end
52
52
  unless xml_doc.at_xpath('//tt:H264').nil?
53
- configuration["h264"] = {
53
+ configuration[:h264] = {
54
54
  gov_length: value(_get_node(xml_doc, "//tt:H264"), "//tt:GovLength"),
55
55
  h264_profile: value(_get_node(xml_doc, "//tt:H264"), "//tt:H264Profile")
56
56
  }
@@ -12,8 +12,8 @@ module ONVIF
12
12
  message = create_media_onvif_message
13
13
  message.body = ->(xml) do
14
14
  xml.wsdl(:GetVideoEncoderConfigurationOptions) do
15
- xml.wsdl :ConfigurationToken, options["c_token"]
16
- xml.wsdl :ProfileToken, options["p_token"]
15
+ xml.wsdl :ConfigurationToken, options[:c_token]
16
+ xml.wsdl :ProfileToken, options[:p_token]
17
17
  end
18
18
  end
19
19
  send_message message do |success, result|
@@ -29,7 +29,7 @@ module ONVIF
29
29
  extension: ""
30
30
  }
31
31
  unless xml_doc.at_xpath('//tt:MPEG4').nil?
32
- options["mpeg4"] = {
32
+ options[:mpeg4] = {
33
33
  resolutions_available: _get_each_val(_get_node(xml_doc, "//tt:MPEG4"), "//tt:ResolutionsAvailable"),
34
34
  gov_length_range: _get_min_max(_get_node(xml_doc, "//tt:MPEG4"), "//tt:GovLengthRange"),
35
35
  frame_rate_range: _get_min_max(_get_node(xml_doc, "//tt:MPEG4"), "//tt:FrameRateRange"),
@@ -38,7 +38,7 @@ module ONVIF
38
38
  }
39
39
  end
40
40
  unless xml_doc.at_xpath('//tt:H264').nil?
41
- options["h264"] = {
41
+ options[:h264] = {
42
42
  resolutions_available: _get_each_val(_get_node(xml_doc, "//tt:H264"), "//tt:ResolutionsAvailable"),
43
43
  gov_length_range: _get_min_max(_get_node(xml_doc, "//tt:H264"), "//tt:GovLengthRange"),
44
44
  frame_rate_range: _get_min_max(_get_node(xml_doc, "//tt:H264"), "//tt:FrameRateRange"),
@@ -32,13 +32,13 @@ module ONVIF
32
32
  session_timeout: value(root_node, "tt:SessionTimeout")
33
33
  }
34
34
  unless root_node.at_xpath('//tt:MPEG4').nil?
35
- success_result["MPEG4"] = {
35
+ success_result[:MPEG4] = {
36
36
  gov_length: value(_get_node(root_node, "tt:MPEG4"), "tt:GovLength"),
37
37
  mpeg4_profile: value(_get_node(root_node, "tt:MPEG4"), "tt:Mpeg4Profile")
38
38
  }
39
39
  end
40
40
  unless root_node.at_xpath('//tt:H264').nil?
41
- success_result["H264"] = {
41
+ success_result[:H264] = {
42
42
  gov_length: value(_get_node(root_node, "tt:H264"), "tt:GovLength"),
43
43
  h264_profile: value(_get_node(root_node, "tt:H264"), "tt:H264Profile")
44
44
  }
@@ -46,46 +46,46 @@ module ONVIF
46
46
  message = create_media_onvif_message namespaces: {:'xmlns:sch' => 'http://www.onvif.org/ver10/schema'}
47
47
  message.body = ->(xml) do
48
48
  xml.wsdl(:SetVideoEncoderConfiguration) do
49
- xml.wsdl :Configuration, {"token" => configuration["configuration"]["token"]}
49
+ xml.wsdl :Configuration, {"token" => configuration[:configuration][:token]}
50
50
  xml.wsdl(:Configuration) do
51
- xml.sch :Name, configuration["configuration"]["name"]
52
- xml.sch :UseCount, configuration["configuration"]["use_count"]
53
- xml.sch :Encoding, configuration["configuration"]["encoding"]
51
+ xml.sch :Name, configuration[:configuration][:name]
52
+ xml.sch :UseCount, configuration[:configuration][:use_count]
53
+ xml.sch :Encoding, configuration[:configuration][:encoding]
54
54
  xml.sch(:Resolution) do
55
- xml.sch :Width, configuration["configuration"]["resolution"]["width"]
56
- xml.sch :Height, configuration["configuration"]["resolution"]["height"]
55
+ xml.sch :Width, configuration[:configuration][:resolution][:width]
56
+ xml.sch :Height, configuration[:configuration][:resolution][:height]
57
57
  end
58
- xml.sch :Quality,configuration["configuration"]["quality"]
58
+ xml.sch :Quality,configuration[:configuration][:quality]
59
59
  xml.sch(:RateControl) do
60
- xml.sch :FrameRateLimit, configuration["configuration"]["rate_control"]["frame_rate_limit"]
61
- xml.sch :EncodingInterval, configuration["configuration"]["rate_control"]["encoding_interval"]
62
- xml.sch :BitrateLimit, configuration["configuration"]["rate_control"]["bitrate_limit"]
60
+ xml.sch :FrameRateLimit, configuration[:configuration][:rate_control][:frame_rate_limit]
61
+ xml.sch :EncodingInterval, configuration[:configuration][:rate_control][:encoding_interval]
62
+ xml.sch :BitrateLimit, configuration[:configuration][:rate_control][:bitrate_limit]
63
63
  end
64
- unless configuration["configuration"]["mpeg4"].nil?
64
+ unless configuration[:configuration][:mpeg4].nil?
65
65
  xml.sch(:MPEG4) do
66
- xml.sch :GovLength, configuration["configuration"]["mpeg4"]["gov_length"]
67
- xml.sch :Mpeg4Profile, configuration["configuration"]["mpeg4"]["mpeg4_profile"]
66
+ xml.sch :GovLength, configuration[:configuration][:mpeg4][:gov_length]
67
+ xml.sch :Mpeg4Profile, configuration[:configuration][:mpeg4][:mpeg4_profile]
68
68
  end
69
69
  end
70
- unless configuration["configuration"]["h264"].nil?
70
+ unless configuration[:configuration][:h264].nil?
71
71
  xml.sch(:H264) do
72
- xml.sch :GovLength, configuration["configuration"]["h264"]["gov_length"]
73
- xml.sch :H264Profile, configuration["configuration"]["h264"]["h264_profile"]
72
+ xml.sch :GovLength, configuration[:configuration][:h264][:gov_length]
73
+ xml.sch :H264Profile, configuration[:configuration][:h264][:h264_profile]
74
74
  end
75
75
  end
76
76
  xml.sch(:Multicast) do
77
77
  xml.sch(:Address) do
78
- xml.sch :Type, configuration["configuration"]["multicast"]["address"]["type"]
79
- xml.sch :IPv4Address, configuration["configuration"]["multicast"]["address"]["ipv4_address"]
80
- xml.sch :IPv6Address, configuration["configuration"]["multicast"]["address"]["ipv6_address"]
78
+ xml.sch :Type, configuration[:configuration][:multicast][:address][:type]
79
+ xml.sch :IPv4Address, configuration[:configuration][:multicast][:address][:ipv4_address]
80
+ xml.sch :IPv6Address, configuration[:configuration][:multicast][:address][:ipv6_address]
81
81
  end
82
- xml.sch :Port, configuration["configuration"]["multicast"]["port"]
83
- xml.sch :TTL, configuration["configuration"]["multicast"]["ttl"]
84
- xml.sch :AutoStart, configuration["configuration"]["multicast"]["auto_start"]
82
+ xml.sch :Port, configuration[:configuration][:multicast][:port]
83
+ xml.sch :TTL, configuration[:configuration][:multicast][:ttl]
84
+ xml.sch :AutoStart, configuration[:configuration][:multicast][:auto_start]
85
85
  end
86
- xml.sch :SessionTimeout, configuration["configuration"]["session_timeout"]
86
+ xml.sch :SessionTimeout, configuration[:configuration][:session_timeout]
87
87
  end
88
- xml.wsdl :ForcePersistence, configuration["force_persistence"]
88
+ xml.wsdl :ForcePersistence, configuration[:force_persistence]
89
89
  end
90
90
  end
91
91
  send_message message do |success, result|
@@ -0,0 +1,9 @@
1
+ require_relative 'service'
2
+ Dir.chdir __dir__ do
3
+ require_dir 'ptz'
4
+ end
5
+
6
+ module ONVIF
7
+ class Ptz < Service
8
+ end
9
+ end
@@ -0,0 +1,26 @@
1
+ require_relative '../action'
2
+
3
+ module ONVIF
4
+ module PtzAction
5
+ class GetNode < Action
6
+ # node_token 的结构 //[ReferenceToken] Token of the requested PTZNode.
7
+ def run node_token ,cb
8
+ message = create_ptz_onvif_message
9
+ message.body = ->(xml) do
10
+ xml.wsdl(:GetNode) do
11
+ xml.wsdl :NodeToken, node_token
12
+ end
13
+ end
14
+ send_message message do |success, result|
15
+ if success
16
+ xml_doc = Nokogiri::XML(result[:content])
17
+ preset_token = value(xml_doc, '//tptz:PTZNode')
18
+ callback cb, success, preset_token
19
+ else
20
+ callback cb, success, result
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,24 @@
1
+ require_relative '../action'
2
+
3
+ module ONVIF
4
+ module PtzAction
5
+ class GetNodes < Action
6
+ # node_token 的结构 //[ReferenceToken] Token of the requested PTZNode.
7
+ def run node_token ,cb
8
+ message = create_ptz_onvif_message
9
+ message.body = ->(xml) do
10
+ xml.wsdl(:GetNodes)
11
+ end
12
+ send_message message do |success, result|
13
+ if success
14
+ xml_doc = Nokogiri::XML(result[:content])
15
+ # ???
16
+ callback cb, success, preset_token
17
+ else
18
+ callback cb, success, result
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,33 @@
1
+ require_relative '../action'
2
+
3
+ module ONVIF
4
+ module PtzAction
5
+ class Stop < Action
6
+ # options 的结构
7
+ # {
8
+ # profile_token: 'xxxxx', //[ReferenceToken]
9
+ # pantilt: 'xxxxx', // [string] A requested preset name.
10
+ # zoom: 'xxxxx', // [ReferenceToken]A requested preset token.
11
+ # }
12
+ def run options ,cb
13
+ message = create_ptz_onvif_message
14
+ message.body = ->(xml) do
15
+ xml.wsdl(:Stop) do
16
+ xml.wsdl :ProfileToken, options[:profile_token]
17
+ xml.wsdl :PanTilt, options[:pantilt]
18
+ xml.wsdl :Zoom, options[:zoom]
19
+ end
20
+ end
21
+ send_message message do |success, result|
22
+ if success
23
+ xml_doc = Nokogiri::XML(result[:content])
24
+ preset_token = value(xml_doc, '//tptz:PresetToken')
25
+ callback cb, success, preset_token
26
+ else
27
+ callback cb, success, result
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'ruby_onvif_client'
3
- s.version = '0.0.5'
4
- s.date = '2013-07-04'
3
+ s.version = '0.0.7'
4
+ s.date = '2013-07-08'
5
5
  s.summary = "Ruby实现的onvif客户端"
6
6
  s.description = "使用ruby实现的简单的onvif客户端"
7
7
  s.authors = ["jimxl"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_onvif_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - jimxl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-04 00:00:00.000000000 Z
11
+ date: 2013-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: em_ws_discovery
@@ -86,6 +86,9 @@ files:
86
86
  - lib/ruby_onvif_client/client.rb
87
87
  - lib/ruby_onvif_client/message.rb
88
88
  - lib/ruby_onvif_client/path.rb
89
+ - lib/ruby_onvif_client/ptz/get_nodes.rb
90
+ - lib/ruby_onvif_client/ptz/stop.rb
91
+ - lib/ruby_onvif_client/ptz/get_node.rb
89
92
  - lib/ruby_onvif_client/device_management.rb
90
93
  - lib/ruby_onvif_client/media.rb
91
94
  - lib/ruby_onvif_client/media/get_video_encoder_configuration.rb
@@ -102,6 +105,7 @@ files:
102
105
  - lib/ruby_onvif_client/media/get_video_encoder_configurations.rb
103
106
  - lib/ruby_onvif_client/media/get_stream_uri.rb
104
107
  - lib/ruby_onvif_client/action.rb
108
+ - lib/ruby_onvif_client/ptz.rb
105
109
  - lib/ruby_onvif_client/device_discovery.rb
106
110
  - lib/ruby_onvif_client.rb
107
111
  - Gemfile