class WinRM::HTTP::TransportFactory
Factory for creating a HTTP transport that can be used for WinRM SOAP calls.
Public Instance Methods
create_transport(connection_opts)
click to toggle source
Creates a new WinRM HTTP transport using the specified connection options. @param connection_opts [ConnectionOpts|Hash] The connection ConnectionOpts. @return [HttpTransport] A transport instance for making WinRM calls.
# File lib/winrm/http/transport_factory.rb, line 24 def create_transport(connection_opts) transport = connection_opts[:transport] validate_transport!(transport) send "init_#{transport}_transport", connection_opts end
Private Instance Methods
init_kerberos_transport(opts)
click to toggle source
# File lib/winrm/http/transport_factory.rb, line 36 def init_kerberos_transport(opts) HTTP::HttpGSSAPI.new(opts[:endpoint], opts[:realm], opts, opts[:service]) end
init_negotiate_transport(opts)
click to toggle source
# File lib/winrm/http/transport_factory.rb, line 32 def init_negotiate_transport(opts) HTTP::HttpNegotiate.new(opts[:endpoint], opts[:user], opts[:password], opts) end
init_plaintext_transport(opts)
click to toggle source
# File lib/winrm/http/transport_factory.rb, line 40 def init_plaintext_transport(opts) HTTP::HttpPlaintext.new(opts[:endpoint], opts[:user], opts[:password], opts) end
init_ssl_transport(opts)
click to toggle source
# File lib/winrm/http/transport_factory.rb, line 44 def init_ssl_transport(opts) if opts[:basic_auth_only] HTTP::BasicAuthSSL.new(opts[:endpoint], opts[:user], opts[:password], opts) elsif opts[:client_cert] HTTP::ClientCertAuthSSL.new(opts[:endpoint], opts[:client_cert], opts[:client_key], opts[:key_pass], opts) else HTTP::HttpNegotiate.new(opts[:endpoint], opts[:user], opts[:password], opts) end end
validate_transport!(transport)
click to toggle source
# File lib/winrm/http/transport_factory.rb, line 55 def validate_transport!(transport) valid = private_methods .select { |m| m.to_s.start_with?('init_') && m.to_s.end_with?('_transport') } .map { |tm| tm.to_s.split('_')[1] } raise WinRM::InvalidTransportError.new(transport, valid) unless valid.include?(transport.to_s) end