lib/winrm/wsmv/wql_query.rb in winrm-2.0.3 vs lib/winrm/wsmv/wql_query.rb in winrm-2.1.0
- old
+ new
@@ -1,79 +1,79 @@
-# -*- encoding: utf-8 -*-
-#
-# Copyright 2016 Shawn Neal <sneal@sneal.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-require 'nori'
-require_relative 'base'
-
-module WinRM
- module WSMV
- # WSMV message to query Windows via WQL
- class WqlQuery < Base
- def initialize(session_opts, wql)
- @session_opts = session_opts
- @wql = wql
- end
-
- def process_response(response)
- parser = Nori.new(
- parser: :rexml,
- advanced_typecasting: false,
- convert_tags_to: ->(tag) { tag.snakecase.to_sym },
- strip_namespaces: true
- )
- hresp = parser.parse(response.to_s)[:envelope][:body]
-
- # Normalize items so the type always has an array even if it's just a single item.
- items = {}
- if hresp[:enumerate_response][:items]
- hresp[:enumerate_response][:items].each_pair do |k, v|
- items[k] = v.is_a?(Array) ? v : [v]
- end
- end
- items
- end
-
- protected
-
- def create_header(header)
- header << Gyoku.xml(wql_header)
- end
-
- def create_body(body)
- body.tag!("#{NS_ENUM}:Enumerate") { |en| en << Gyoku.xml(wql_body) }
- end
-
- private
-
- def wql_header
- merge_headers(shared_headers(@session_opts), resource_uri_wmi, action_enumerate)
- end
-
- def wql_body
- {
- "#{NS_WSMAN_DMTF}:OptimizeEnumeration" => nil,
- "#{NS_WSMAN_DMTF}:MaxElements" => '32000',
- "#{NS_WSMAN_DMTF}:Filter" => @wql,
- "#{NS_WSMAN_MSFT}:SessionId" => "uuid:#{@session_opts[:session_id]}",
- :attributes! => {
- "#{NS_WSMAN_DMTF}:Filter" => {
- 'Dialect' => 'http://schemas.microsoft.com/wbem/wsman/1/WQL'
- }
- }
- }
- end
- end
- end
-end
+# -*- encoding: utf-8 -*-
+#
+# Copyright 2016 Shawn Neal <sneal@sneal.net>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+require 'nori'
+require_relative 'base'
+
+module WinRM
+ module WSMV
+ # WSMV message to query Windows via WQL
+ class WqlQuery < Base
+ def initialize(session_opts, wql)
+ @session_opts = session_opts
+ @wql = wql
+ end
+
+ def process_response(response)
+ parser = Nori.new(
+ parser: :rexml,
+ advanced_typecasting: false,
+ convert_tags_to: ->(tag) { tag.snakecase.to_sym },
+ strip_namespaces: true
+ )
+ hresp = parser.parse(response.to_s)[:envelope][:body]
+
+ # Normalize items so the type always has an array even if it's just a single item.
+ items = {}
+ if hresp[:enumerate_response][:items]
+ hresp[:enumerate_response][:items].each_pair do |k, v|
+ items[k] = v.is_a?(Array) ? v : [v]
+ end
+ end
+ items
+ end
+
+ protected
+
+ def create_header(header)
+ header << Gyoku.xml(wql_header)
+ end
+
+ def create_body(body)
+ body.tag!("#{NS_ENUM}:Enumerate") { |en| en << Gyoku.xml(wql_body) }
+ end
+
+ private
+
+ def wql_header
+ merge_headers(shared_headers(@session_opts), resource_uri_wmi, action_enumerate)
+ end
+
+ def wql_body
+ {
+ "#{NS_WSMAN_DMTF}:OptimizeEnumeration" => nil,
+ "#{NS_WSMAN_DMTF}:MaxElements" => '32000',
+ "#{NS_WSMAN_DMTF}:Filter" => @wql,
+ "#{NS_WSMAN_MSFT}:SessionId" => "uuid:#{@session_opts[:session_id]}",
+ :attributes! => {
+ "#{NS_WSMAN_DMTF}:Filter" => {
+ 'Dialect' => 'http://schemas.microsoft.com/wbem/wsman/1/WQL'
+ }
+ }
+ }
+ end
+ end
+ end
+end