diff options
author | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-07-03 13:33:20 +0000 |
---|---|---|
committer | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-07-03 13:33:20 +0000 |
commit | df731e37a1953755edfedd1462995fa824ca22bf (patch) | |
tree | 38a98e1b29b3784843ad079fa003790c8f352f58 /lib/soap/streamHandler.rb | |
parent | 0d6fa996d9e842fe435308cef68df06bc3596a76 (diff) | |
download | ruby-df731e37a1953755edfedd1462995fa824ca22bf.tar.gz |
* added files:
* lib/soap/header/*
* lib/soap/rpc/httpserver.rb
* lib/wsdl/soap/cgiStubCreator.rb
* lib/wsdl/soap/classDefCreator.rb
* lib/wsdl/soap/classDefCreatorSupport.rb
* lib/wsdl/soap/clientSkeltonCreator.rb
* lib/wsdl/soap/driverCreator.rb
* lib/wsdl/soap/mappingRegistryCreator.rb
* lib/wsdl/soap/methodDefCreator.rb
* lib/wsdl/soap/servantSkeltonCreator.rb
* lib/wsdl/soap/standaloneServerStubCreator.rb
* lib/wsdl/xmlSchema/enumeration.rb
* lib/wsdl/xmlSchema/simpleRestriction.rb
* lib/wsdl/xmlSchema/simpleType.rb
* lib/xsd/codegen/*
* lib/xsd/codegen.rb
* sample/soap/authheader/*
* sample/soap/raa2.4/*
* sample/soap/ssl/*
* sample/soap/swa/*
* sample/soap/whois.rb
* sample/wsdl/raa2.4/*
* test/soap/header/*
* test/soap/ssl/*
* test/soap/struct/*
* test/soap/swa/*
* test/soap/wsdlDriver/*
* test/wsdl/multiplefault.wsdl
* test/wsdl/simpletype/*
* test/wsdl/test_multiplefault.rb
* modified files:
* lib/soap/baseData.rb
* lib/soap/element.rb
* lib/soap/generator.rb
* lib/soap/netHttpClient.rb
* lib/soap/parser.rb
* lib/soap/property.rb
* lib/soap/soap.rb
* lib/soap/streamHandler.rb
* lib/soap/wsdlDriver.rb
* lib/soap/wsdlDriver.rb
* lib/soap/encodingstyle/handler.rb
* lib/soap/encodingstyle/literalHandler.rb
* lib/soap/encodingstyle/soapHandler.rb
* lib/soap/mapping/factory.rb
* lib/soap/mapping/mapping.rb
* lib/soap/mapping/registry.rb
* lib/soap/mapping/rubytypeFactory.rb
* lib/soap/mapping/wsdlRegistry.rb
* lib/soap/rpc/cgistub.rb
* lib/soap/rpc/driver.rb
* lib/soap/rpc/proxy.rb
* lib/soap/rpc/router.rb
* lib/soap/rpc/soaplet.rb
* lib/soap/rpc/standaloneServer.rb
* lib/wsdl/data.rb
* lib/wsdl/definitions.rb
* lib/wsdl/operation.rb
* lib/wsdl/parser.rb
* lib/wsdl/soap/definitions.rb
* lib/wsdl/xmlSchema/complexContent.rb
* lib/wsdl/xmlSchema/complexType.rb
* lib/wsdl/xmlSchema/data.rb
* lib/wsdl/xmlSchema/parser.rb
* lib/wsdl/xmlSchema/schema.rb
* lib/xsd/datatypes.rb
* lib/xsd/qname.rb
* sample/soap/sampleStruct/server.rb
* sample/wsdl/amazon/AmazonSearch.rb
* sample/wsdl/amazon/AmazonSearchDriver.rb
* test/soap/test_property.rb
* test/soap/calc/test_calc_cgi.rb
* test/wsdl/test_emptycomplextype.rb
* summary
* add SOAP Header mustUnderstand support.
* add HTTP client SSL configuration and Cookies support (works
completely with http-access2).
* add header handler for handling sending/receiving SOAP Header.
* map Ruby's anonymous Struct to common SOAP Struct in SOAP Object
Model. it caused error.
* add WSDL simpleType support to restrict lexical value space.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/soap/streamHandler.rb')
-rw-r--r-- | lib/soap/streamHandler.rb | 75 |
1 files changed, 66 insertions, 9 deletions
diff --git a/lib/soap/streamHandler.rb b/lib/soap/streamHandler.rb index 0d08a00bd8..efadf21e07 100644 --- a/lib/soap/streamHandler.rb +++ b/lib/soap/streamHandler.rb @@ -83,6 +83,11 @@ public @options = options set_options @client.debug_dev = @wiredump_dev + @cookie_store = nil + end + + def test_loopback_response + @client.test_loopback_response end def inspect @@ -95,6 +100,7 @@ public def reset @client.reset(@endpoint_url) + @client.save_cookie_store if @cookie_store end private @@ -118,10 +124,6 @@ private @options.add_hook("cookie_store_file") do |key, value| set_cookie_store_file(value) end - set_ssl_config(@options["ssl_config"]) - @options.add_hook("ssl_config") do |key, value| - set_ssl_config(@options["ssl_config"]) - end @charset = @options["charset"] || XSD::Charset.charset_label($KCODE) @options.add_hook("charset") do |key, value| @charset = value @@ -131,12 +133,18 @@ private @wiredump_dev = value @client.debug_dev = @wiredump_dev end + ssl_config = @options["ssl_config"] ||= ::SOAP::Property.new + set_ssl_config(ssl_config) + ssl_config.add_hook(true) do |key, value| + set_ssl_config(ssl_config) + end basic_auth = @options["basic_auth"] ||= ::SOAP::Property.new set_basic_auth(basic_auth) basic_auth.add_hook do |key, value| set_basic_auth(basic_auth) end @options.lock(true) + ssl_config.unlock basic_auth.unlock end @@ -147,13 +155,62 @@ private end def set_cookie_store_file(value) - return unless value - raise NotImplementedError.new + @cookie_store = value + @client.set_cookie_store(@cookie_store) if @cookie_store + end + + def set_ssl_config(ssl_config) + ssl_config.each do |key, value| + cfg = @client.ssl_config + case key + when 'client_cert' + cfg.client_cert = cert_from_file(value) + when 'client_key' + cfg.client_key = key_from_file(value) + when 'client_ca' + cfg.client_ca = value + when 'ca_path' + cfg.set_trust_ca(value) + when 'ca_file' + cfg.set_trust_ca(value) + when 'crl' + cfg.set_crl(value) + when 'verify_mode' + cfg.verify_mode = ssl_config_int(value) + when 'verify_depth' + cfg.verify_depth = ssl_config_int(value) + when 'options' + cfg.options = value + when 'ciphers' + cfg.ciphers = value + when 'verify_callback' + cfg.verify_callback = value + when 'cert_store' + cfg.cert_store = value + else + raise ArgumentError.new("unknown ssl_config property #{key}") + end + end + end + + def ssl_config_int(value) + if value.nil? or value.empty? + nil + else + begin + Integer(value) + rescue ArgumentError + ::SOAP::Property::Util.const_from_name(value) + end + end + end + + def cert_from_file(filename) + OpenSSL::X509::Certificate.new(File.open(filename) { |f| f.read }) end - def set_ssl_config(value) - return unless value - raise NotImplementedError.new + def key_from_file(filename) + OpenSSL::PKey::RSA.new(File.open(filename) { |f| f.read }) end def send_post(conn_data, soapaction, charset) |