Sha256: cfa87225e7ade4a500f804f82361d29fbe8ec7f139a0536244032f6e9213847a
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
# -*- 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 'base64' module WinRM # Handles decoding a raw output response class CommandOutputDecoder # Decode the raw SOAP output into decoded and human consumable text, # Decodes and replaces invalid unicode characters. # @param raw_output [String] The raw encoded output # @return [String] The decoded output def decode(raw_output) decoded_text = decode_raw_output(raw_output) decoded_text = handle_invalid_encoding(decoded_text) decoded_text = remove_bom(decoded_text) decoded_text end private def decode_raw_output(raw_output) Base64.decode64(raw_output).force_encoding('utf-8') end def handle_invalid_encoding(decoded_text) return decoded_text if decoded_text.valid_encoding? if decoded_text.respond_to?(:scrub) decoded_text.scrub else decoded_text.encode('utf-16', invalid: :replace, undef: :replace).encode('utf-8') end end def remove_bom(decoded_text) # remove BOM which 2008R2 applies decoded_text.sub("\xEF\xBB\xBF", '') end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
winrm-1.7.3 | lib/winrm/command_output_decoder.rb |