soap4r 1.5.5.20061022
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/wsdl2ruby.rb +131 -0
- data/bin/xsd2ruby.rb +82 -0
- data/lib/soap/XMLSchemaDatatypes.rb +9 -0
- data/lib/soap/XMLSchemaDatatypes1999.rb +10 -0
- data/lib/soap/attachment.rb +108 -0
- data/lib/soap/baseData.rb +992 -0
- data/lib/soap/cgistub.rb +9 -0
- data/lib/soap/charset.rb +9 -0
- data/lib/soap/compat.rb +182 -0
- data/lib/soap/driver.rb +9 -0
- data/lib/soap/element.rb +266 -0
- data/lib/soap/encodingstyle/aspDotNetHandler.rb +207 -0
- data/lib/soap/encodingstyle/handler.rb +109 -0
- data/lib/soap/encodingstyle/literalHandler.rb +241 -0
- data/lib/soap/encodingstyle/soapHandler.rb +598 -0
- data/lib/soap/generator.rb +264 -0
- data/lib/soap/header/handler.rb +60 -0
- data/lib/soap/header/handlerset.rb +70 -0
- data/lib/soap/header/simplehandler.rb +44 -0
- data/lib/soap/httpconfigloader.rb +119 -0
- data/lib/soap/mapping.rb +12 -0
- data/lib/soap/mapping/encodedregistry.rb +531 -0
- data/lib/soap/mapping/factory.rb +372 -0
- data/lib/soap/mapping/literalregistry.rb +321 -0
- data/lib/soap/mapping/mapping.rb +561 -0
- data/lib/soap/mapping/registry.rb +258 -0
- data/lib/soap/mapping/rubytypeFactory.rb +475 -0
- data/lib/soap/mapping/typeMap.rb +82 -0
- data/lib/soap/mapping/wsdlencodedregistry.rb +253 -0
- data/lib/soap/mapping/wsdlliteralregistry.rb +246 -0
- data/lib/soap/mappingRegistry.rb +9 -0
- data/lib/soap/marshal.rb +59 -0
- data/lib/soap/mimemessage.rb +241 -0
- data/lib/soap/namespace.rb +9 -0
- data/lib/soap/netHttpClient.rb +204 -0
- data/lib/soap/parser.rb +251 -0
- data/lib/soap/processor.rb +66 -0
- data/lib/soap/property.rb +333 -0
- data/lib/soap/proxy.rb +14 -0
- data/lib/soap/qname.rb +9 -0
- data/lib/soap/rpc/cgistub.rb +214 -0
- data/lib/soap/rpc/driver.rb +245 -0
- data/lib/soap/rpc/element.rb +330 -0
- data/lib/soap/rpc/httpserver.rb +143 -0
- data/lib/soap/rpc/proxy.rb +563 -0
- data/lib/soap/rpc/router.rb +602 -0
- data/lib/soap/rpc/rpc.rb +25 -0
- data/lib/soap/rpc/soaplet.rb +162 -0
- data/lib/soap/rpc/standaloneServer.rb +43 -0
- data/lib/soap/rpcRouter.rb +9 -0
- data/lib/soap/rpcUtils.rb +9 -0
- data/lib/soap/server.rb +9 -0
- data/lib/soap/soap.rb +150 -0
- data/lib/soap/standaloneServer.rb +9 -0
- data/lib/soap/streamHandler.rb +258 -0
- data/lib/soap/wsdlDriver.rb +580 -0
- data/lib/wsdl/binding.rb +65 -0
- data/lib/wsdl/data.rb +64 -0
- data/lib/wsdl/definitions.rb +250 -0
- data/lib/wsdl/documentation.rb +32 -0
- data/lib/wsdl/import.rb +80 -0
- data/lib/wsdl/importer.rb +38 -0
- data/lib/wsdl/info.rb +39 -0
- data/lib/wsdl/message.rb +54 -0
- data/lib/wsdl/operation.rb +175 -0
- data/lib/wsdl/operationBinding.rb +116 -0
- data/lib/wsdl/param.rb +85 -0
- data/lib/wsdl/parser.rb +163 -0
- data/lib/wsdl/part.rb +52 -0
- data/lib/wsdl/port.rb +84 -0
- data/lib/wsdl/portType.rb +75 -0
- data/lib/wsdl/service.rb +61 -0
- data/lib/wsdl/soap/address.rb +40 -0
- data/lib/wsdl/soap/binding.rb +49 -0
- data/lib/wsdl/soap/body.rb +56 -0
- data/lib/wsdl/soap/cgiStubCreator.rb +88 -0
- data/lib/wsdl/soap/classDefCreator.rb +340 -0
- data/lib/wsdl/soap/classDefCreatorSupport.rb +131 -0
- data/lib/wsdl/soap/clientSkeltonCreator.rb +93 -0
- data/lib/wsdl/soap/complexType.rb +166 -0
- data/lib/wsdl/soap/data.rb +42 -0
- data/lib/wsdl/soap/definitions.rb +151 -0
- data/lib/wsdl/soap/driverCreator.rb +110 -0
- data/lib/wsdl/soap/element.rb +28 -0
- data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +117 -0
- data/lib/wsdl/soap/fault.rb +56 -0
- data/lib/wsdl/soap/header.rb +86 -0
- data/lib/wsdl/soap/headerfault.rb +56 -0
- data/lib/wsdl/soap/literalMappingRegistryCreator.rb +188 -0
- data/lib/wsdl/soap/mappingRegistryCreator.rb +53 -0
- data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +233 -0
- data/lib/wsdl/soap/methodDefCreator.rb +253 -0
- data/lib/wsdl/soap/operation.rb +122 -0
- data/lib/wsdl/soap/servantSkeltonCreator.rb +78 -0
- data/lib/wsdl/soap/standaloneServerStubCreator.rb +98 -0
- data/lib/wsdl/soap/wsdl2ruby.rb +196 -0
- data/lib/wsdl/types.rb +44 -0
- data/lib/wsdl/wsdl.rb +23 -0
- data/lib/wsdl/xmlSchema/all.rb +24 -0
- data/lib/wsdl/xmlSchema/annotation.rb +34 -0
- data/lib/wsdl/xmlSchema/any.rb +56 -0
- data/lib/wsdl/xmlSchema/attribute.rb +123 -0
- data/lib/wsdl/xmlSchema/choice.rb +55 -0
- data/lib/wsdl/xmlSchema/complexContent.rb +88 -0
- data/lib/wsdl/xmlSchema/complexExtension.rb +104 -0
- data/lib/wsdl/xmlSchema/complexRestriction.rb +92 -0
- data/lib/wsdl/xmlSchema/complexType.rb +152 -0
- data/lib/wsdl/xmlSchema/content.rb +74 -0
- data/lib/wsdl/xmlSchema/data.rb +90 -0
- data/lib/wsdl/xmlSchema/element.rb +158 -0
- data/lib/wsdl/xmlSchema/enumeration.rb +36 -0
- data/lib/wsdl/xmlSchema/import.rb +65 -0
- data/lib/wsdl/xmlSchema/importer.rb +87 -0
- data/lib/wsdl/xmlSchema/include.rb +54 -0
- data/lib/wsdl/xmlSchema/length.rb +35 -0
- data/lib/wsdl/xmlSchema/list.rb +48 -0
- data/lib/wsdl/xmlSchema/maxlength.rb +35 -0
- data/lib/wsdl/xmlSchema/minlength.rb +35 -0
- data/lib/wsdl/xmlSchema/parser.rb +166 -0
- data/lib/wsdl/xmlSchema/pattern.rb +36 -0
- data/lib/wsdl/xmlSchema/schema.rb +144 -0
- data/lib/wsdl/xmlSchema/sequence.rb +51 -0
- data/lib/wsdl/xmlSchema/simpleContent.rb +69 -0
- data/lib/wsdl/xmlSchema/simpleExtension.rb +54 -0
- data/lib/wsdl/xmlSchema/simpleRestriction.rb +91 -0
- data/lib/wsdl/xmlSchema/simpleType.rb +80 -0
- data/lib/wsdl/xmlSchema/unique.rb +34 -0
- data/lib/wsdl/xmlSchema/xsd2ruby.rb +107 -0
- data/lib/xsd/charset.rb +187 -0
- data/lib/xsd/codegen.rb +12 -0
- data/lib/xsd/codegen/classdef.rb +203 -0
- data/lib/xsd/codegen/commentdef.rb +34 -0
- data/lib/xsd/codegen/gensupport.rb +168 -0
- data/lib/xsd/codegen/methoddef.rb +70 -0
- data/lib/xsd/codegen/moduledef.rb +191 -0
- data/lib/xsd/datatypes.rb +1282 -0
- data/lib/xsd/datatypes1999.rb +20 -0
- data/lib/xsd/iconvcharset.rb +33 -0
- data/lib/xsd/mapping.rb +42 -0
- data/lib/xsd/namedelements.rb +124 -0
- data/lib/xsd/ns.rb +146 -0
- data/lib/xsd/qname.rb +78 -0
- data/lib/xsd/xmlparser.rb +61 -0
- data/lib/xsd/xmlparser/parser.rb +96 -0
- data/lib/xsd/xmlparser/rexmlparser.rb +54 -0
- data/lib/xsd/xmlparser/xmlparser.rb +50 -0
- data/lib/xsd/xmlparser/xmlscanner.rb +147 -0
- data/test/16runner.rb +68 -0
- data/test/interopR2/README.txt +2 -0
- data/test/interopR2/SOAPBuildersInterop_R2.wsdl +461 -0
- data/test/interopR2/SOAPBuildersInterop_R2GrB.wsdl +19 -0
- data/test/interopR2/base.rb +288 -0
- data/test/interopR2/client.NetRemoting.rb +17 -0
- data/test/interopR2/client.NetRemoting.rb.result +3410 -0
- data/test/interopR2/client.NetRemoting_Base.log +6279 -0
- data/test/interopR2/client.NetRemoting_GroupB.log +1188 -0
- data/test/interopR2/client.rb +1228 -0
- data/test/interopR2/client4S4C.rb +15 -0
- data/test/interopR2/client4S4C2.rb +14 -0
- data/test/interopR2/client4S4C2_Base.log +4955 -0
- data/test/interopR2/client4S4C2_GroupB.log +1000 -0
- data/test/interopR2/client4S4C_Base.log +4635 -0
- data/test/interopR2/client4S4C_GroupB.log +900 -0
- data/test/interopR2/clientASP.NET.rb +17 -0
- data/test/interopR2/clientASP.NET_Base.log +5468 -0
- data/test/interopR2/clientASP.NET_GroupB.log +977 -0
- data/test/interopR2/clientApacheAxis.rb +16 -0
- data/test/interopR2/clientApacheAxis_Base.log +3171 -0
- data/test/interopR2/clientApacheAxis_GroupB.log +498 -0
- data/test/interopR2/clientApacheSOAP.rb +17 -0
- data/test/interopR2/clientApacheSOAP_Base.log +3171 -0
- data/test/interopR2/clientBEAWebLogic.rb +17 -0
- data/test/interopR2/clientBEAWebLogic_Base.log +3171 -0
- data/test/interopR2/clientBEAWebLogic_GroupB.log +498 -0
- data/test/interopR2/clientBase.rb +1970 -0
- data/test/interopR2/clientCapeConnect.rb +18 -0
- data/test/interopR2/clientCapeConnect_Base.log +2126 -0
- data/test/interopR2/clientDelphi.rb +19 -0
- data/test/interopR2/clientDelphi_Base.log +0 -0
- data/test/interopR2/clientEasySoap.rb +14 -0
- data/test/interopR2/clientEasySoap_Base.log +6187 -0
- data/test/interopR2/clientEasySoap_GroupB.log +1076 -0
- data/test/interopR2/clientFrontier.rb +25 -0
- data/test/interopR2/clientFrontier_Base.log +5188 -0
- data/test/interopR2/clientGLUE.rb +32 -0
- data/test/interopR2/clientHP.rb +13 -0
- data/test/interopR2/clientHP_Base.log +3171 -0
- data/test/interopR2/clientHP_GroupB.log +498 -0
- data/test/interopR2/clientJAX-RPC.rb +19 -0
- data/test/interopR2/clientJSOAP.rb +14 -0
- data/test/interopR2/clientJSOAP_Base.log +4465 -0
- data/test/interopR2/clientJSOAP_GroupB.log +824 -0
- data/test/interopR2/clientKafkaXSLT.rb +15 -0
- data/test/interopR2/clientKafkaXSLT_Base.log +10299 -0
- data/test/interopR2/clientKafkaXSLT_GroupB.log +1739 -0
- data/test/interopR2/clientMSSOAPToolkit2.0.rb +17 -0
- data/test/interopR2/clientMSSOAPToolkit2.0_Base.log +4805 -0
- data/test/interopR2/clientMSSOAPToolkit2.0_GroupB.log +871 -0
- data/test/interopR2/clientMSSOAPToolkit3.0.rb +17 -0
- data/test/interopR2/clientMSSOAPToolkit3.0_Base.log +5076 -0
- data/test/interopR2/clientMSSOAPToolkit3.0_GroupB.log +908 -0
- data/test/interopR2/clientNuSOAP.rb +19 -0
- data/test/interopR2/clientNuSOAP_Base.log +5076 -0
- data/test/interopR2/clientNuSOAP_GroupB.log +958 -0
- data/test/interopR2/clientNuWave.rb +15 -0
- data/test/interopR2/clientNuWave_Base.log +2019 -0
- data/test/interopR2/clientOpenLink.rb +15 -0
- data/test/interopR2/clientOpenLink_Base.log +6171 -0
- data/test/interopR2/clientOpenLink_GroupB.log +1094 -0
- data/test/interopR2/clientOracle.rb +15 -0
- data/test/interopR2/clientOracle_Base.log +5594 -0
- data/test/interopR2/clientPEAR.rb +18 -0
- data/test/interopR2/clientPEAR_Base.log +6261 -0
- data/test/interopR2/clientPEAR_GroupB.log +1106 -0
- data/test/interopR2/clientPhalanx.rb +18 -0
- data/test/interopR2/clientPhalanx_Base.log +41036 -0
- data/test/interopR2/clientPhalanx_GroupB.log +6519 -0
- data/test/interopR2/clientSIMACE.rb +18 -0
- data/test/interopR2/clientSIMACE_Base.log +6171 -0
- data/test/interopR2/clientSIMACE_GroupB.log +1093 -0
- data/test/interopR2/clientSOAP4R.rb +18 -0
- data/test/interopR2/clientSOAP4R.rb.result +3409 -0
- data/test/interopR2/clientSOAP4R_Base.log +6366 -0
- data/test/interopR2/clientSOAP4R_GroupB.log +1112 -0
- data/test/interopR2/clientSOAP__Lite.rb +14 -0
- data/test/interopR2/clientSQLData.rb +18 -0
- data/test/interopR2/clientSQLData_Base.log +4857 -0
- data/test/interopR2/clientSQLData_GroupB.log +770 -0
- data/test/interopR2/clientSilverStream.rb +17 -0
- data/test/interopR2/clientSilverStream_Base.log +3171 -0
- data/test/interopR2/clientSpray2001.rb +17 -0
- data/test/interopR2/clientSpray2001_Base.log +8187 -0
- data/test/interopR2/clientSpray2001_GroupB.log +1408 -0
- data/test/interopR2/clientSun.rb +19 -0
- data/test/interopR2/clientSun_Base.log +4641 -0
- data/test/interopR2/clientSun_GroupB.log +856 -0
- data/test/interopR2/clientVWOpentalkSoap.rb +19 -0
- data/test/interopR2/clientVWOpentalkSoap_Base.log +5402 -0
- data/test/interopR2/clientVWOpentalkSoap_GroupB.log +972 -0
- data/test/interopR2/clientWASP.rb +19 -0
- data/test/interopR2/clientWASPC.rb +18 -0
- data/test/interopR2/clientWASPC_Base.log +4187 -0
- data/test/interopR2/clientWASPC_GroupB.log +763 -0
- data/test/interopR2/clientWASP_Base.log +5414 -0
- data/test/interopR2/clientWASP_GroupB.log +970 -0
- data/test/interopR2/clientWebMethods.rb +15 -0
- data/test/interopR2/clientWebMethods_Base.log +3075 -0
- data/test/interopR2/clientWebMethods_GroupB.log +483 -0
- data/test/interopR2/clientWhiteMesa.rb +28 -0
- data/test/interopR2/clientWhiteMesa_Base.log +4359 -0
- data/test/interopR2/clientWhiteMesa_GroupB.log +808 -0
- data/test/interopR2/clientWingfoot.rb +15 -0
- data/test/interopR2/clientWingfoot_Base.log +4445 -0
- data/test/interopR2/clientWingfoot_GroupB.log +848 -0
- data/test/interopR2/clientXMLBus.rb +19 -0
- data/test/interopR2/clientXMLBus_Base.log +3075 -0
- data/test/interopR2/clientXMLBus_GroupB.log +483 -0
- data/test/interopR2/clientXMLRPC-EPI.rb +17 -0
- data/test/interopR2/clientXSOAP.rb +14 -0
- data/test/interopR2/clientXSOAP_Base.log +4445 -0
- data/test/interopR2/clientZSI.rb +19 -0
- data/test/interopR2/clienteSOAP.rb +18 -0
- data/test/interopR2/clienteSOAP_Base.log +8728 -0
- data/test/interopR2/clientgSOAP.rb +18 -0
- data/test/interopR2/clientgSOAP_Base.log +4689 -0
- data/test/interopR2/clientgSOAP_GroupB.log +1014 -0
- data/test/interopR2/clientkSOAP.rb +17 -0
- data/test/interopR2/clientkSOAP_Base.log +5625 -0
- data/test/interopR2/iSimonReg.rb +112 -0
- data/test/interopR2/interopResultBase.rb +114 -0
- data/test/interopR2/interopService.rb +247 -0
- data/test/interopR2/result_client.NetRemoting.txt +4593 -0
- data/test/interopR2/rwikiInteropService.rb +105 -0
- data/test/interopR2/server.cgi +270 -0
- data/test/interopR2/server.rb +274 -0
- data/test/interopR2/simonReg.rb +123 -0
- data/test/interopR2/test.sh +49 -0
- data/test/interopR4/client.rb +112 -0
- data/test/runner.rb +9 -0
- data/test/sm11/classDef.rb +156 -0
- data/test/sm11/client.rb +542 -0
- data/test/sm11/driver.rb +183 -0
- data/test/sm11/servant.rb +1067 -0
- data/test/sm11/server.rb +25 -0
- data/test/soap/asp.net/hello.wsdl +96 -0
- data/test/soap/asp.net/test_aspdotnet.rb +112 -0
- data/test/soap/calc/calc.rb +17 -0
- data/test/soap/calc/calc2.rb +29 -0
- data/test/soap/calc/server.cgi +13 -0
- data/test/soap/calc/server.rb +17 -0
- data/test/soap/calc/server2.rb +20 -0
- data/test/soap/calc/test_calc.rb +49 -0
- data/test/soap/calc/test_calc2.rb +53 -0
- data/test/soap/calc/test_calc_cgi.rb +69 -0
- data/test/soap/fault/test_customfault.rb +58 -0
- data/test/soap/header/server.cgi +119 -0
- data/test/soap/header/test_authheader.rb +240 -0
- data/test/soap/header/test_authheader_cgi.rb +121 -0
- data/test/soap/header/test_simplehandler.rb +116 -0
- data/test/soap/helloworld/hw_s.rb +16 -0
- data/test/soap/helloworld/test_helloworld.rb +41 -0
- data/test/soap/literalArrayMapping/amazonEc.rb +4778 -0
- data/test/soap/literalArrayMapping/amazonEcDriver.rb +172 -0
- data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
- data/test/soap/literalArrayMapping/test_definedarray.rb +36 -0
- data/test/soap/marshal/marshaltestlib.rb +494 -0
- data/test/soap/marshal/test_digraph.rb +56 -0
- data/test/soap/marshal/test_marshal.rb +26 -0
- data/test/soap/marshal/test_struct.rb +47 -0
- data/test/soap/ssl/README +1 -0
- data/test/soap/ssl/ca.cert +23 -0
- data/test/soap/ssl/client.cert +19 -0
- data/test/soap/ssl/client.key +15 -0
- data/test/soap/ssl/server.cert +19 -0
- data/test/soap/ssl/server.key +15 -0
- data/test/soap/ssl/sslsvr.rb +57 -0
- data/test/soap/ssl/subca.cert +21 -0
- data/test/soap/ssl/test_ssl.rb +245 -0
- data/test/soap/struct/test_struct.rb +77 -0
- data/test/soap/styleuse/client.rb +20 -0
- data/test/soap/styleuse/server.rb +86 -0
- data/test/soap/swa/test_file.rb +73 -0
- data/test/soap/test_basetype.rb +976 -0
- data/test/soap/test_custommap.rb +108 -0
- data/test/soap/test_empty.rb +79 -0
- data/test/soap/test_envelopenamespace.rb +92 -0
- data/test/soap/test_httpconfigloader.rb +39 -0
- data/test/soap/test_mapping.rb +59 -0
- data/test/soap/test_no_indent.rb +86 -0
- data/test/soap/test_property.rb +424 -0
- data/test/soap/test_response_as_xml.rb +95 -0
- data/test/soap/test_soapelement.rb +120 -0
- data/test/soap/test_streamhandler.rb +262 -0
- data/test/soap/test_styleuse.rb +333 -0
- data/test/soap/wsdlDriver/README.txt +2 -0
- data/test/soap/wsdlDriver/calc.wsdl +126 -0
- data/test/soap/wsdlDriver/document.wsdl +54 -0
- data/test/soap/wsdlDriver/echo_version.rb +29 -0
- data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
- data/test/soap/wsdlDriver/test_calc.rb +100 -0
- data/test/soap/wsdlDriver/test_document.rb +78 -0
- data/test/soap/wsdlDriver/test_simpletype.rb +87 -0
- data/test/wsdl/abstract/abstract.wsdl +97 -0
- data/test/wsdl/abstract/test_abstract.rb +130 -0
- data/test/wsdl/any/any.wsdl +51 -0
- data/test/wsdl/any/expectedDriver.rb +46 -0
- data/test/wsdl/any/expectedEcho.rb +18 -0
- data/test/wsdl/any/expectedService.rb +42 -0
- data/test/wsdl/any/test_any.rb +193 -0
- data/test/wsdl/axisArray/axisArray.wsdl +60 -0
- data/test/wsdl/axisArray/itemList.rb +14 -0
- data/test/wsdl/axisArray/test_axisarray.rb +69 -0
- data/test/wsdl/choice/choice.wsdl +91 -0
- data/test/wsdl/choice/test_choice.rb +134 -0
- data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
- data/test/wsdl/complexcontent/test_echo.rb +101 -0
- data/test/wsdl/datetime/DatetimeService.rb +44 -0
- data/test/wsdl/datetime/datetime.rb +0 -0
- data/test/wsdl/datetime/datetime.wsdl +45 -0
- data/test/wsdl/datetime/datetimeServant.rb +21 -0
- data/test/wsdl/datetime/test_datetime.rb +82 -0
- data/test/wsdl/document/array/double.wsdl +72 -0
- data/test/wsdl/document/array/test_array.rb +117 -0
- data/test/wsdl/document/document.wsdl +74 -0
- data/test/wsdl/document/number.wsdl +54 -0
- data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
- data/test/wsdl/document/test_nosoapaction.rb +109 -0
- data/test/wsdl/document/test_number.rb +99 -0
- data/test/wsdl/document/test_rpc.rb +211 -0
- data/test/wsdl/emptycomplextype.wsdl +31 -0
- data/test/wsdl/list/list.wsdl +93 -0
- data/test/wsdl/list/test_list.rb +134 -0
- data/test/wsdl/map/map.wsdl +92 -0
- data/test/wsdl/map/map.xml +43 -0
- data/test/wsdl/map/test_map.rb +99 -0
- data/test/wsdl/marshal/person.wsdl +21 -0
- data/test/wsdl/marshal/person_org.rb +18 -0
- data/test/wsdl/marshal/test_wsdlmarshal.rb +79 -0
- data/test/wsdl/multiplefault.wsdl +68 -0
- data/test/wsdl/overload/overload.wsdl +80 -0
- data/test/wsdl/overload/test_overload.rb +118 -0
- data/test/wsdl/qualified/lp.wsdl +47 -0
- data/test/wsdl/qualified/lp.xsd +26 -0
- data/test/wsdl/qualified/np.wsdl +51 -0
- data/test/wsdl/qualified/test_qualified.rb +145 -0
- data/test/wsdl/qualified/test_unqualified.rb +159 -0
- data/test/wsdl/raa/RAA.rb +120 -0
- data/test/wsdl/raa/RAAServant.rb +107 -0
- data/test/wsdl/raa/RAAService.rb +120 -0
- data/test/wsdl/raa/README.txt +8 -0
- data/test/wsdl/raa/raa.wsdl +264 -0
- data/test/wsdl/raa/server.rb +103 -0
- data/test/wsdl/raa/test_raa.rb +91 -0
- data/test/wsdl/ref/expectedProduct.rb +158 -0
- data/test/wsdl/ref/product.wsdl +147 -0
- data/test/wsdl/ref/test_ref.rb +289 -0
- data/test/wsdl/rpc/rpc.wsdl +83 -0
- data/test/wsdl/rpc/test-rpc-lit.wsdl +364 -0
- data/test/wsdl/rpc/test_rpc.rb +173 -0
- data/test/wsdl/rpc/test_rpc_lit.rb +407 -0
- data/test/wsdl/simplecontent/simplecontent.wsdl +83 -0
- data/test/wsdl/simplecontent/test_simplecontent.rb +116 -0
- data/test/wsdl/simpletype/rpc/expectedClient.rb +34 -0
- data/test/wsdl/simpletype/rpc/expectedDriver.rb +55 -0
- data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +19 -0
- data/test/wsdl/simpletype/rpc/expectedServant.rb +32 -0
- data/test/wsdl/simpletype/rpc/expectedService.rb +51 -0
- data/test/wsdl/simpletype/rpc/rpc.wsdl +80 -0
- data/test/wsdl/simpletype/rpc/test_rpc.rb +62 -0
- data/test/wsdl/simpletype/simpletype.wsdl +95 -0
- data/test/wsdl/simpletype/test_simpletype.rb +99 -0
- data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
- data/test/wsdl/soap/test_soapbodyparts.rb +79 -0
- data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +19 -0
- data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +34 -0
- data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +55 -0
- data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +32 -0
- data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +44 -0
- data/test/wsdl/soap/wsdl2ruby/expectedService.rb +51 -0
- data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
- data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +31 -0
- data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
- data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +54 -0
- data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
- data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +96 -0
- data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +79 -0
- data/test/wsdl/soaptype/soaptype.wsdl +61 -0
- data/test/wsdl/soaptype/test_soaptype.rb +160 -0
- data/test/wsdl/test_emptycomplextype.rb +21 -0
- data/test/wsdl/test_fault.rb +50 -0
- data/test/wsdl/test_multiplefault.rb +39 -0
- data/test/xsd/codegen/test_classdef.rb +214 -0
- data/test/xsd/noencoding.xml +4 -0
- data/test/xsd/test_noencoding.rb +32 -0
- data/test/xsd/test_ns.rb +20 -0
- data/test/xsd/test_xmlschemaparser.rb +22 -0
- data/test/xsd/test_xsd.rb +1523 -0
- data/test/xsd/xmllang.xml +43 -0
- data/test/xsd/xmlschema.xml +12 -0
- metadata +539 -0
data/lib/soap/rpc/rpc.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# SOAP4R - RPC utility.
|
2
|
+
# Copyright (C) 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
|
+
|
4
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
6
|
+
# either the dual license version in 2003, or any later version.
|
7
|
+
|
8
|
+
|
9
|
+
module SOAP
|
10
|
+
|
11
|
+
|
12
|
+
module RPC
|
13
|
+
ServerException = Mapping::MappedException
|
14
|
+
|
15
|
+
def self.defined_methods(obj)
|
16
|
+
if obj.is_a?(Module)
|
17
|
+
obj.methods - Module.methods
|
18
|
+
else
|
19
|
+
obj.methods - Object.instance_methods(true)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,162 @@
|
|
1
|
+
# SOAP4R - SOAP handler servlet for WEBrick
|
2
|
+
# Copyright (C) 2001-2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
|
+
|
4
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
6
|
+
# either the dual license version in 2003, or any later version.
|
7
|
+
|
8
|
+
|
9
|
+
require 'webrick/httpservlet/abstract'
|
10
|
+
require 'webrick/httpstatus'
|
11
|
+
require 'soap/rpc/router'
|
12
|
+
require 'soap/streamHandler'
|
13
|
+
begin
|
14
|
+
require 'stringio'
|
15
|
+
require 'zlib'
|
16
|
+
rescue LoadError
|
17
|
+
warn("Loading stringio or zlib failed. No gzipped response supported.") if $DEBUG
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
warn("Overriding WEBrick::Log#debug") if $DEBUG
|
22
|
+
require 'webrick/log'
|
23
|
+
module WEBrick
|
24
|
+
class Log < BasicLog
|
25
|
+
alias __debug debug
|
26
|
+
def debug(msg = nil)
|
27
|
+
if block_given? and msg.nil?
|
28
|
+
__debug(yield)
|
29
|
+
else
|
30
|
+
__debug(msg)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
module SOAP
|
38
|
+
module RPC
|
39
|
+
|
40
|
+
|
41
|
+
class SOAPlet < WEBrick::HTTPServlet::AbstractServlet
|
42
|
+
public
|
43
|
+
attr_reader :options
|
44
|
+
|
45
|
+
def initialize(router = nil)
|
46
|
+
@router = router || ::SOAP::RPC::Router.new(self.class.name)
|
47
|
+
@options = {}
|
48
|
+
@config = {}
|
49
|
+
end
|
50
|
+
|
51
|
+
# for backward compatibility
|
52
|
+
def app_scope_router
|
53
|
+
@router
|
54
|
+
end
|
55
|
+
|
56
|
+
# for backward compatibility
|
57
|
+
def add_servant(obj, namespace)
|
58
|
+
@router.add_rpc_servant(obj, namespace)
|
59
|
+
end
|
60
|
+
|
61
|
+
def allow_content_encoding_gzip=(allow)
|
62
|
+
@options[:allow_content_encoding_gzip] = allow
|
63
|
+
end
|
64
|
+
|
65
|
+
###
|
66
|
+
## Servlet interfaces for WEBrick.
|
67
|
+
#
|
68
|
+
def get_instance(config, *options)
|
69
|
+
@config = config
|
70
|
+
self
|
71
|
+
end
|
72
|
+
|
73
|
+
def require_path_info?
|
74
|
+
false
|
75
|
+
end
|
76
|
+
|
77
|
+
def do_GET(req, res)
|
78
|
+
res.header['Allow'] = 'POST'
|
79
|
+
raise WEBrick::HTTPStatus::MethodNotAllowed, "GET request not allowed"
|
80
|
+
end
|
81
|
+
|
82
|
+
def do_POST(req, res)
|
83
|
+
logger.debug { "SOAP request: " + req.body } if logger
|
84
|
+
begin
|
85
|
+
conn_data = ::SOAP::StreamHandler::ConnectionData.new
|
86
|
+
setup_req(conn_data, req)
|
87
|
+
@router.external_ces = @options[:external_ces]
|
88
|
+
conn_data = @router.route(conn_data)
|
89
|
+
setup_res(conn_data, req, res)
|
90
|
+
rescue Exception => e
|
91
|
+
conn_data = @router.create_fault_response(e)
|
92
|
+
res.status = WEBrick::HTTPStatus::RC_INTERNAL_SERVER_ERROR
|
93
|
+
res.body = conn_data.send_string
|
94
|
+
res['content-type'] = conn_data.send_contenttype || "text/xml"
|
95
|
+
end
|
96
|
+
if res.body.is_a?(IO)
|
97
|
+
res.chunked = true
|
98
|
+
logger.debug { "SOAP response: (chunked response not logged)" } if logger
|
99
|
+
else
|
100
|
+
logger.debug { "SOAP response: " + res.body } if logger
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
private
|
105
|
+
|
106
|
+
def logger
|
107
|
+
@config[:Logger]
|
108
|
+
end
|
109
|
+
|
110
|
+
def setup_req(conn_data, req)
|
111
|
+
conn_data.receive_string = req.body
|
112
|
+
conn_data.receive_contenttype = req['content-type']
|
113
|
+
conn_data.soapaction = parse_soapaction(req.meta_vars['HTTP_SOAPACTION'])
|
114
|
+
end
|
115
|
+
|
116
|
+
def setup_res(conn_data, req, res)
|
117
|
+
res['content-type'] = conn_data.send_contenttype
|
118
|
+
if conn_data.is_fault
|
119
|
+
res.status = WEBrick::HTTPStatus::RC_INTERNAL_SERVER_ERROR
|
120
|
+
end
|
121
|
+
if outstring = encode_gzip(req, conn_data.send_string)
|
122
|
+
res['content-encoding'] = 'gzip'
|
123
|
+
res['content-length'] = outstring.size
|
124
|
+
res.body = outstring
|
125
|
+
else
|
126
|
+
res.body = conn_data.send_string
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
def parse_soapaction(soapaction)
|
131
|
+
if !soapaction.nil? and !soapaction.empty?
|
132
|
+
if /^"(.+)"$/ =~ soapaction
|
133
|
+
return $1
|
134
|
+
end
|
135
|
+
end
|
136
|
+
nil
|
137
|
+
end
|
138
|
+
|
139
|
+
def encode_gzip(req, outstring)
|
140
|
+
unless encode_gzip?(req)
|
141
|
+
return nil
|
142
|
+
end
|
143
|
+
begin
|
144
|
+
ostream = StringIO.new
|
145
|
+
gz = Zlib::GzipWriter.new(ostream)
|
146
|
+
gz.write(outstring)
|
147
|
+
ostream.string
|
148
|
+
ensure
|
149
|
+
gz.close
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def encode_gzip?(req)
|
154
|
+
@options[:allow_content_encoding_gzip] and defined?(::Zlib) and
|
155
|
+
req['accept-encoding'] and
|
156
|
+
req['accept-encoding'].split(/,\s*/).include?('gzip')
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
|
161
|
+
end
|
162
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# SOAP4R - WEBrick Server
|
2
|
+
# Copyright (C) 2003 by NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
|
+
|
4
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
6
|
+
# either the dual license version in 2003, or any later version.
|
7
|
+
|
8
|
+
|
9
|
+
require 'soap/rpc/httpserver'
|
10
|
+
|
11
|
+
|
12
|
+
module SOAP
|
13
|
+
module RPC
|
14
|
+
|
15
|
+
|
16
|
+
class StandaloneServer < HTTPServer
|
17
|
+
def initialize(appname, default_namespace, host = "0.0.0.0", port = 8080)
|
18
|
+
@appname = appname
|
19
|
+
@default_namespace = default_namespace
|
20
|
+
@host = host
|
21
|
+
@port = port
|
22
|
+
super(create_config)
|
23
|
+
end
|
24
|
+
|
25
|
+
alias add_servant add_rpc_servant
|
26
|
+
alias add_headerhandler add_rpc_headerhandler
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def create_config
|
31
|
+
{
|
32
|
+
:BindAddress => @host,
|
33
|
+
:Port => @port,
|
34
|
+
:AccessLog => [],
|
35
|
+
:SOAPDefaultNamespace => @default_namespace,
|
36
|
+
:SOAPHTTPServerApplicationName => @appname,
|
37
|
+
}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# SOAP4R - RPC Routing library
|
2
|
+
# Copyright (C) 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
|
+
|
4
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
6
|
+
# either the dual license version in 2003, or any later version.
|
7
|
+
|
8
|
+
|
9
|
+
require 'soap/compat'
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# SOAP4R - RPC utility.
|
2
|
+
# Copyright (C) 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
|
+
|
4
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
6
|
+
# either the dual license version in 2003, or any later version.
|
7
|
+
|
8
|
+
|
9
|
+
require 'soap/compat'
|
data/lib/soap/server.rb
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
# SOAP4R - Server implementation
|
2
|
+
# Copyright (C) 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
|
+
|
4
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
6
|
+
# either the dual license version in 2003, or any later version.
|
7
|
+
|
8
|
+
|
9
|
+
require 'soap/compat'
|
data/lib/soap/soap.rb
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
# soap/soap.rb: SOAP4R - Base definitions.
|
2
|
+
# Copyright (C) 2000-2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
|
+
|
4
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
6
|
+
# either the dual license version in 2003, or any later version.
|
7
|
+
|
8
|
+
|
9
|
+
require 'xsd/qname'
|
10
|
+
require 'xsd/charset'
|
11
|
+
|
12
|
+
|
13
|
+
module SOAP
|
14
|
+
|
15
|
+
|
16
|
+
VERSION = Version = '1.5.5'
|
17
|
+
PropertyName = 'soap/property'
|
18
|
+
|
19
|
+
EnvelopeNamespace = 'http://schemas.xmlsoap.org/soap/envelope/'
|
20
|
+
EncodingNamespace = 'http://schemas.xmlsoap.org/soap/encoding/'
|
21
|
+
LiteralNamespace = 'http://xml.apache.org/xml-soap/literalxml'
|
22
|
+
|
23
|
+
NextActor = 'http://schemas.xmlsoap.org/soap/actor/next'
|
24
|
+
|
25
|
+
EleEnvelope = 'Envelope'
|
26
|
+
EleHeader = 'Header'
|
27
|
+
EleBody = 'Body'
|
28
|
+
EleFault = 'Fault'
|
29
|
+
EleFaultString = 'faultstring'
|
30
|
+
EleFaultActor = 'faultactor'
|
31
|
+
EleFaultCode = 'faultcode'
|
32
|
+
EleFaultDetail = 'detail'
|
33
|
+
|
34
|
+
AttrMustUnderstand = 'mustUnderstand'
|
35
|
+
AttrEncodingStyle = 'encodingStyle'
|
36
|
+
AttrActor = 'actor'
|
37
|
+
AttrRoot = 'root'
|
38
|
+
AttrArrayType = 'arrayType'
|
39
|
+
AttrOffset = 'offset'
|
40
|
+
AttrPosition = 'position'
|
41
|
+
ValueArray = 'Array'
|
42
|
+
|
43
|
+
EleEnvelopeName = XSD::QName.new(EnvelopeNamespace, EleEnvelope).freeze
|
44
|
+
EleHeaderName = XSD::QName.new(EnvelopeNamespace, EleHeader).freeze
|
45
|
+
EleBodyName = XSD::QName.new(EnvelopeNamespace, EleBody).freeze
|
46
|
+
EleFaultName = XSD::QName.new(EnvelopeNamespace, EleFault).freeze
|
47
|
+
EleFaultStringName = XSD::QName.new(nil, EleFaultString).freeze
|
48
|
+
EleFaultActorName = XSD::QName.new(nil, EleFaultActor).freeze
|
49
|
+
EleFaultCodeName = XSD::QName.new(nil, EleFaultCode).freeze
|
50
|
+
EleFaultDetailName = XSD::QName.new(nil, EleFaultDetail).freeze
|
51
|
+
AttrActorName = XSD::QName.new(EnvelopeNamespace, AttrActor).freeze
|
52
|
+
AttrMustUnderstandName = XSD::QName.new(EnvelopeNamespace, AttrMustUnderstand).freeze
|
53
|
+
AttrEncodingStyleName = XSD::QName.new(EnvelopeNamespace, AttrEncodingStyle).freeze
|
54
|
+
AttrRootName = XSD::QName.new(EncodingNamespace, AttrRoot).freeze
|
55
|
+
AttrArrayTypeName = XSD::QName.new(EncodingNamespace, AttrArrayType).freeze
|
56
|
+
AttrOffsetName = XSD::QName.new(EncodingNamespace, AttrOffset).freeze
|
57
|
+
AttrPositionName = XSD::QName.new(EncodingNamespace, AttrPosition).freeze
|
58
|
+
ValueArrayName = XSD::QName.new(EncodingNamespace, ValueArray).freeze
|
59
|
+
|
60
|
+
Base64Literal = 'base64'
|
61
|
+
|
62
|
+
SOAPNamespaceTag = 'env'
|
63
|
+
XSDNamespaceTag = 'xsd'
|
64
|
+
XSINamespaceTag = 'xsi'
|
65
|
+
|
66
|
+
MediaType = 'text/xml'
|
67
|
+
|
68
|
+
class Error < StandardError; end
|
69
|
+
|
70
|
+
class StreamError < Error; end
|
71
|
+
class HTTPStreamError < StreamError; end
|
72
|
+
class PostUnavailableError < HTTPStreamError; end
|
73
|
+
class MPostUnavailableError < HTTPStreamError; end
|
74
|
+
|
75
|
+
class ArrayIndexOutOfBoundsError < Error; end
|
76
|
+
class ArrayStoreError < Error; end
|
77
|
+
|
78
|
+
class RPCRoutingError < Error; end
|
79
|
+
class EmptyResponseError < Error; end
|
80
|
+
class ResponseFormatError < Error; end
|
81
|
+
|
82
|
+
class UnhandledMustUnderstandHeaderError < Error; end
|
83
|
+
|
84
|
+
|
85
|
+
module FaultCode
|
86
|
+
VersionMismatch = XSD::QName.new(EnvelopeNamespace, 'VersionMismatch').freeze
|
87
|
+
MustUnderstand = XSD::QName.new(EnvelopeNamespace, 'MustUnderstand').freeze
|
88
|
+
Client = XSD::QName.new(EnvelopeNamespace, 'Client').freeze
|
89
|
+
Server = XSD::QName.new(EnvelopeNamespace, 'Server').freeze
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
class FaultError < Error
|
94
|
+
attr_reader :faultcode
|
95
|
+
attr_reader :faultstring
|
96
|
+
attr_reader :faultactor
|
97
|
+
attr_accessor :detail
|
98
|
+
|
99
|
+
def initialize(fault)
|
100
|
+
@faultcode = fault.faultcode
|
101
|
+
@faultstring = fault.faultstring
|
102
|
+
@faultactor = fault.faultactor
|
103
|
+
@detail = fault.detail
|
104
|
+
super(self.to_s)
|
105
|
+
end
|
106
|
+
|
107
|
+
def to_s
|
108
|
+
str = nil
|
109
|
+
if @faultstring and @faultstring.respond_to?('data')
|
110
|
+
str = @faultstring.data
|
111
|
+
end
|
112
|
+
str || '(No faultstring)'
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
|
117
|
+
module Env
|
118
|
+
def self.getenv(name)
|
119
|
+
ENV[name.downcase] || ENV[name.upcase]
|
120
|
+
end
|
121
|
+
|
122
|
+
use_proxy = getenv('soap_use_proxy') == 'on'
|
123
|
+
HTTP_PROXY = use_proxy ? getenv('http_proxy') : nil
|
124
|
+
NO_PROXY = use_proxy ? getenv('no_proxy') : nil
|
125
|
+
end
|
126
|
+
|
127
|
+
|
128
|
+
end
|
129
|
+
|
130
|
+
|
131
|
+
unless Object.respond_to?(:instance_variable_get)
|
132
|
+
class Object
|
133
|
+
def instance_variable_get(ivarname)
|
134
|
+
instance_eval(ivarname)
|
135
|
+
end
|
136
|
+
|
137
|
+
def instance_variable_set(ivarname, value)
|
138
|
+
instance_eval("#{ivarname} = value")
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
|
144
|
+
unless Kernel.respond_to?(:warn)
|
145
|
+
module Kernel
|
146
|
+
def warn(msg)
|
147
|
+
STDERR.puts(msg + "\n") unless $VERBOSE.nil?
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# SOAP4R - Standalone Server
|
2
|
+
# Copyright (C) 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
|
+
|
4
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
6
|
+
# either the dual license version in 2003, or any later version.
|
7
|
+
|
8
|
+
|
9
|
+
require 'soap/compat'
|
@@ -0,0 +1,258 @@
|
|
1
|
+
# SOAP4R - Stream handler.
|
2
|
+
# Copyright (C) 2000, 2001, 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
|
+
|
4
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
6
|
+
# either the dual license version in 2003, or any later version.
|
7
|
+
|
8
|
+
|
9
|
+
require 'soap/soap'
|
10
|
+
require 'soap/httpconfigloader'
|
11
|
+
begin
|
12
|
+
require 'stringio'
|
13
|
+
require 'zlib'
|
14
|
+
rescue LoadError
|
15
|
+
warn("Loading stringio or zlib failed. No gzipped response support.") if $DEBUG
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
module SOAP
|
20
|
+
|
21
|
+
|
22
|
+
class StreamHandler
|
23
|
+
RUBY_VERSION_STRING = "ruby #{ RUBY_VERSION } (#{ RUBY_RELEASE_DATE }) [#{ RUBY_PLATFORM }]"
|
24
|
+
|
25
|
+
class ConnectionData
|
26
|
+
attr_accessor :send_string
|
27
|
+
attr_accessor :send_contenttype
|
28
|
+
attr_accessor :receive_string
|
29
|
+
attr_accessor :receive_contenttype
|
30
|
+
attr_accessor :is_fault
|
31
|
+
attr_accessor :soapaction
|
32
|
+
|
33
|
+
def initialize(send_string = nil)
|
34
|
+
@send_string = send_string
|
35
|
+
@send_contenttype = nil
|
36
|
+
@receive_string = nil
|
37
|
+
@receive_contenttype = nil
|
38
|
+
@is_fault = false
|
39
|
+
@soapaction = nil
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.parse_media_type(str)
|
44
|
+
if /^#{ MediaType }(?:\s*;\s*charset=([^"]+|"[^"]+"))?$/i !~ str
|
45
|
+
return nil
|
46
|
+
end
|
47
|
+
charset = $1
|
48
|
+
charset.gsub!(/"/, '') if charset
|
49
|
+
charset || 'us-ascii'
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.create_media_type(charset)
|
53
|
+
"#{ MediaType }; charset=#{ charset }"
|
54
|
+
end
|
55
|
+
|
56
|
+
def send(endpoint_url, conn_data, soapaction = nil, charset = nil)
|
57
|
+
# send a ConnectionData to specified endpoint_url.
|
58
|
+
# return value is a ConnectionData with receive_* property filled.
|
59
|
+
# You can fill values of given conn_data and return it.
|
60
|
+
end
|
61
|
+
|
62
|
+
def reset(endpoint_url = nil)
|
63
|
+
# for initializing connection status if needed.
|
64
|
+
# return value is not expected.
|
65
|
+
end
|
66
|
+
|
67
|
+
def set_wiredump_file_base(wiredump_file_base)
|
68
|
+
# for logging. return value is not expected.
|
69
|
+
# Override it when you want.
|
70
|
+
raise NotImplementedError
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_loopback_response
|
74
|
+
# for loopback testing. see HTTPStreamHandler for more detail.
|
75
|
+
# return value is an Array of loopback responses.
|
76
|
+
# Override it when you want.
|
77
|
+
raise NotImplementedError
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
class HTTPStreamHandler < StreamHandler
|
83
|
+
include SOAP
|
84
|
+
|
85
|
+
begin
|
86
|
+
require 'http-access2'
|
87
|
+
if HTTPAccess2::VERSION < "2.0"
|
88
|
+
raise LoadError.new("http-access/2.0 or later is required.")
|
89
|
+
end
|
90
|
+
Client = HTTPAccess2::Client
|
91
|
+
RETRYABLE = true
|
92
|
+
rescue LoadError
|
93
|
+
warn("Loading http-access2 failed. Net/http is used.") if $DEBUG
|
94
|
+
require 'soap/netHttpClient'
|
95
|
+
Client = SOAP::NetHttpClient
|
96
|
+
RETRYABLE = false
|
97
|
+
end
|
98
|
+
|
99
|
+
|
100
|
+
public
|
101
|
+
|
102
|
+
attr_reader :client
|
103
|
+
attr_accessor :wiredump_file_base
|
104
|
+
|
105
|
+
MAX_RETRY_COUNT = 10 # [times]
|
106
|
+
|
107
|
+
def self.create(options)
|
108
|
+
new(options)
|
109
|
+
end
|
110
|
+
|
111
|
+
def initialize(options)
|
112
|
+
super()
|
113
|
+
@client = Client.new(nil, "SOAP4R/#{ Version }")
|
114
|
+
@wiredump_file_base = nil
|
115
|
+
@charset = @wiredump_dev = nil
|
116
|
+
@options = options
|
117
|
+
set_options
|
118
|
+
@client.debug_dev = @wiredump_dev
|
119
|
+
@cookie_store = nil
|
120
|
+
@accept_encoding_gzip = false
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_loopback_response
|
124
|
+
@client.test_loopback_response
|
125
|
+
end
|
126
|
+
|
127
|
+
def accept_encoding_gzip=(allow)
|
128
|
+
@accept_encoding_gzip = allow
|
129
|
+
end
|
130
|
+
|
131
|
+
def inspect
|
132
|
+
"#<#{self.class}>"
|
133
|
+
end
|
134
|
+
|
135
|
+
def send(endpoint_url, conn_data, soapaction = nil, charset = @charset)
|
136
|
+
conn_data.soapaction ||= soapaction # for backward conpatibility
|
137
|
+
send_post(endpoint_url, conn_data, charset)
|
138
|
+
end
|
139
|
+
|
140
|
+
def reset(endpoint_url = nil)
|
141
|
+
if endpoint_url.nil?
|
142
|
+
@client.reset_all
|
143
|
+
else
|
144
|
+
@client.reset(endpoint_url)
|
145
|
+
end
|
146
|
+
@client.save_cookie_store if @cookie_store
|
147
|
+
end
|
148
|
+
|
149
|
+
private
|
150
|
+
|
151
|
+
def set_options
|
152
|
+
@options["http"] ||= ::SOAP::Property.new
|
153
|
+
HTTPConfigLoader.set_options(@client, @options["http"])
|
154
|
+
@charset = @options["http.charset"] || XSD::Charset.xml_encoding_label
|
155
|
+
@options.add_hook("http.charset") do |key, value|
|
156
|
+
@charset = value
|
157
|
+
end
|
158
|
+
@wiredump_dev = @options["http.wiredump_dev"]
|
159
|
+
@options.add_hook("http.wiredump_dev") do |key, value|
|
160
|
+
@wiredump_dev = value
|
161
|
+
@client.debug_dev = @wiredump_dev
|
162
|
+
end
|
163
|
+
set_cookie_store_file(@options["http.cookie_store_file"])
|
164
|
+
@options.add_hook("http.cookie_store_file") do |key, value|
|
165
|
+
set_cookie_store_file(value)
|
166
|
+
end
|
167
|
+
ssl_config = @options["http.ssl_config"]
|
168
|
+
basic_auth = @options["http.basic_auth"]
|
169
|
+
@options["http"].lock(true)
|
170
|
+
ssl_config.unlock
|
171
|
+
basic_auth.unlock
|
172
|
+
end
|
173
|
+
|
174
|
+
def set_cookie_store_file(value)
|
175
|
+
value = nil if value and value.empty?
|
176
|
+
@cookie_store = value
|
177
|
+
@client.set_cookie_store(@cookie_store) if @cookie_store
|
178
|
+
end
|
179
|
+
|
180
|
+
def send_post(endpoint_url, conn_data, charset)
|
181
|
+
conn_data.send_contenttype ||= StreamHandler.create_media_type(charset)
|
182
|
+
|
183
|
+
if @wiredump_file_base
|
184
|
+
filename = @wiredump_file_base + '_request.xml'
|
185
|
+
f = File.open(filename, "w")
|
186
|
+
f << conn_data.send_string
|
187
|
+
f.close
|
188
|
+
end
|
189
|
+
|
190
|
+
extra = {}
|
191
|
+
extra['Content-Type'] = conn_data.send_contenttype
|
192
|
+
extra['SOAPAction'] = "\"#{ conn_data.soapaction }\""
|
193
|
+
extra['Accept-Encoding'] = 'gzip' if send_accept_encoding_gzip?
|
194
|
+
send_string = conn_data.send_string
|
195
|
+
@wiredump_dev << "Wire dump:\n\n" if @wiredump_dev
|
196
|
+
begin
|
197
|
+
retry_count = 0
|
198
|
+
while true
|
199
|
+
res = @client.post(endpoint_url, send_string, extra)
|
200
|
+
if RETRYABLE and HTTP::Status.redirect?(res.status)
|
201
|
+
retry_count += 1
|
202
|
+
if retry_count >= MAX_RETRY_COUNT
|
203
|
+
raise HTTPStreamError.new("redirect count exceeded")
|
204
|
+
end
|
205
|
+
endpoint_url = res.header["location"][0]
|
206
|
+
puts "redirected to #{endpoint_url}" if $DEBUG
|
207
|
+
else
|
208
|
+
break
|
209
|
+
end
|
210
|
+
end
|
211
|
+
rescue
|
212
|
+
@client.reset(endpoint_url)
|
213
|
+
raise
|
214
|
+
end
|
215
|
+
@wiredump_dev << "\n\n" if @wiredump_dev
|
216
|
+
receive_string = res.content
|
217
|
+
if @wiredump_file_base
|
218
|
+
filename = @wiredump_file_base + '_response.xml'
|
219
|
+
f = File.open(filename, "w")
|
220
|
+
f << receive_string
|
221
|
+
f.close
|
222
|
+
end
|
223
|
+
case res.status
|
224
|
+
when 405
|
225
|
+
raise PostUnavailableError.new("#{ res.status }: #{ res.reason }")
|
226
|
+
when 200, 500
|
227
|
+
# Nothing to do.
|
228
|
+
else
|
229
|
+
raise HTTPStreamError.new("#{ res.status }: #{ res.reason }")
|
230
|
+
end
|
231
|
+
if res.respond_to?(:header) and !res.header['content-encoding'].empty? and
|
232
|
+
res.header['content-encoding'][0].downcase == 'gzip'
|
233
|
+
receive_string = decode_gzip(receive_string)
|
234
|
+
end
|
235
|
+
conn_data.receive_string = receive_string
|
236
|
+
conn_data.receive_contenttype = res.contenttype
|
237
|
+
conn_data
|
238
|
+
end
|
239
|
+
|
240
|
+
def send_accept_encoding_gzip?
|
241
|
+
@accept_encoding_gzip and defined?(::Zlib)
|
242
|
+
end
|
243
|
+
|
244
|
+
def decode_gzip(instring)
|
245
|
+
unless send_accept_encoding_gzip?
|
246
|
+
raise HTTPStreamError.new("Gzipped response content.")
|
247
|
+
end
|
248
|
+
begin
|
249
|
+
gz = Zlib::GzipReader.new(StringIO.new(instring))
|
250
|
+
gz.read
|
251
|
+
ensure
|
252
|
+
gz.close
|
253
|
+
end
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
|
258
|
+
end
|