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.
Files changed (440) hide show
  1. data/bin/wsdl2ruby.rb +131 -0
  2. data/bin/xsd2ruby.rb +82 -0
  3. data/lib/soap/XMLSchemaDatatypes.rb +9 -0
  4. data/lib/soap/XMLSchemaDatatypes1999.rb +10 -0
  5. data/lib/soap/attachment.rb +108 -0
  6. data/lib/soap/baseData.rb +992 -0
  7. data/lib/soap/cgistub.rb +9 -0
  8. data/lib/soap/charset.rb +9 -0
  9. data/lib/soap/compat.rb +182 -0
  10. data/lib/soap/driver.rb +9 -0
  11. data/lib/soap/element.rb +266 -0
  12. data/lib/soap/encodingstyle/aspDotNetHandler.rb +207 -0
  13. data/lib/soap/encodingstyle/handler.rb +109 -0
  14. data/lib/soap/encodingstyle/literalHandler.rb +241 -0
  15. data/lib/soap/encodingstyle/soapHandler.rb +598 -0
  16. data/lib/soap/generator.rb +264 -0
  17. data/lib/soap/header/handler.rb +60 -0
  18. data/lib/soap/header/handlerset.rb +70 -0
  19. data/lib/soap/header/simplehandler.rb +44 -0
  20. data/lib/soap/httpconfigloader.rb +119 -0
  21. data/lib/soap/mapping.rb +12 -0
  22. data/lib/soap/mapping/encodedregistry.rb +531 -0
  23. data/lib/soap/mapping/factory.rb +372 -0
  24. data/lib/soap/mapping/literalregistry.rb +321 -0
  25. data/lib/soap/mapping/mapping.rb +561 -0
  26. data/lib/soap/mapping/registry.rb +258 -0
  27. data/lib/soap/mapping/rubytypeFactory.rb +475 -0
  28. data/lib/soap/mapping/typeMap.rb +82 -0
  29. data/lib/soap/mapping/wsdlencodedregistry.rb +253 -0
  30. data/lib/soap/mapping/wsdlliteralregistry.rb +246 -0
  31. data/lib/soap/mappingRegistry.rb +9 -0
  32. data/lib/soap/marshal.rb +59 -0
  33. data/lib/soap/mimemessage.rb +241 -0
  34. data/lib/soap/namespace.rb +9 -0
  35. data/lib/soap/netHttpClient.rb +204 -0
  36. data/lib/soap/parser.rb +251 -0
  37. data/lib/soap/processor.rb +66 -0
  38. data/lib/soap/property.rb +333 -0
  39. data/lib/soap/proxy.rb +14 -0
  40. data/lib/soap/qname.rb +9 -0
  41. data/lib/soap/rpc/cgistub.rb +214 -0
  42. data/lib/soap/rpc/driver.rb +245 -0
  43. data/lib/soap/rpc/element.rb +330 -0
  44. data/lib/soap/rpc/httpserver.rb +143 -0
  45. data/lib/soap/rpc/proxy.rb +563 -0
  46. data/lib/soap/rpc/router.rb +602 -0
  47. data/lib/soap/rpc/rpc.rb +25 -0
  48. data/lib/soap/rpc/soaplet.rb +162 -0
  49. data/lib/soap/rpc/standaloneServer.rb +43 -0
  50. data/lib/soap/rpcRouter.rb +9 -0
  51. data/lib/soap/rpcUtils.rb +9 -0
  52. data/lib/soap/server.rb +9 -0
  53. data/lib/soap/soap.rb +150 -0
  54. data/lib/soap/standaloneServer.rb +9 -0
  55. data/lib/soap/streamHandler.rb +258 -0
  56. data/lib/soap/wsdlDriver.rb +580 -0
  57. data/lib/wsdl/binding.rb +65 -0
  58. data/lib/wsdl/data.rb +64 -0
  59. data/lib/wsdl/definitions.rb +250 -0
  60. data/lib/wsdl/documentation.rb +32 -0
  61. data/lib/wsdl/import.rb +80 -0
  62. data/lib/wsdl/importer.rb +38 -0
  63. data/lib/wsdl/info.rb +39 -0
  64. data/lib/wsdl/message.rb +54 -0
  65. data/lib/wsdl/operation.rb +175 -0
  66. data/lib/wsdl/operationBinding.rb +116 -0
  67. data/lib/wsdl/param.rb +85 -0
  68. data/lib/wsdl/parser.rb +163 -0
  69. data/lib/wsdl/part.rb +52 -0
  70. data/lib/wsdl/port.rb +84 -0
  71. data/lib/wsdl/portType.rb +75 -0
  72. data/lib/wsdl/service.rb +61 -0
  73. data/lib/wsdl/soap/address.rb +40 -0
  74. data/lib/wsdl/soap/binding.rb +49 -0
  75. data/lib/wsdl/soap/body.rb +56 -0
  76. data/lib/wsdl/soap/cgiStubCreator.rb +88 -0
  77. data/lib/wsdl/soap/classDefCreator.rb +340 -0
  78. data/lib/wsdl/soap/classDefCreatorSupport.rb +131 -0
  79. data/lib/wsdl/soap/clientSkeltonCreator.rb +93 -0
  80. data/lib/wsdl/soap/complexType.rb +166 -0
  81. data/lib/wsdl/soap/data.rb +42 -0
  82. data/lib/wsdl/soap/definitions.rb +151 -0
  83. data/lib/wsdl/soap/driverCreator.rb +110 -0
  84. data/lib/wsdl/soap/element.rb +28 -0
  85. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +117 -0
  86. data/lib/wsdl/soap/fault.rb +56 -0
  87. data/lib/wsdl/soap/header.rb +86 -0
  88. data/lib/wsdl/soap/headerfault.rb +56 -0
  89. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +188 -0
  90. data/lib/wsdl/soap/mappingRegistryCreator.rb +53 -0
  91. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +233 -0
  92. data/lib/wsdl/soap/methodDefCreator.rb +253 -0
  93. data/lib/wsdl/soap/operation.rb +122 -0
  94. data/lib/wsdl/soap/servantSkeltonCreator.rb +78 -0
  95. data/lib/wsdl/soap/standaloneServerStubCreator.rb +98 -0
  96. data/lib/wsdl/soap/wsdl2ruby.rb +196 -0
  97. data/lib/wsdl/types.rb +44 -0
  98. data/lib/wsdl/wsdl.rb +23 -0
  99. data/lib/wsdl/xmlSchema/all.rb +24 -0
  100. data/lib/wsdl/xmlSchema/annotation.rb +34 -0
  101. data/lib/wsdl/xmlSchema/any.rb +56 -0
  102. data/lib/wsdl/xmlSchema/attribute.rb +123 -0
  103. data/lib/wsdl/xmlSchema/choice.rb +55 -0
  104. data/lib/wsdl/xmlSchema/complexContent.rb +88 -0
  105. data/lib/wsdl/xmlSchema/complexExtension.rb +104 -0
  106. data/lib/wsdl/xmlSchema/complexRestriction.rb +92 -0
  107. data/lib/wsdl/xmlSchema/complexType.rb +152 -0
  108. data/lib/wsdl/xmlSchema/content.rb +74 -0
  109. data/lib/wsdl/xmlSchema/data.rb +90 -0
  110. data/lib/wsdl/xmlSchema/element.rb +158 -0
  111. data/lib/wsdl/xmlSchema/enumeration.rb +36 -0
  112. data/lib/wsdl/xmlSchema/import.rb +65 -0
  113. data/lib/wsdl/xmlSchema/importer.rb +87 -0
  114. data/lib/wsdl/xmlSchema/include.rb +54 -0
  115. data/lib/wsdl/xmlSchema/length.rb +35 -0
  116. data/lib/wsdl/xmlSchema/list.rb +48 -0
  117. data/lib/wsdl/xmlSchema/maxlength.rb +35 -0
  118. data/lib/wsdl/xmlSchema/minlength.rb +35 -0
  119. data/lib/wsdl/xmlSchema/parser.rb +166 -0
  120. data/lib/wsdl/xmlSchema/pattern.rb +36 -0
  121. data/lib/wsdl/xmlSchema/schema.rb +144 -0
  122. data/lib/wsdl/xmlSchema/sequence.rb +51 -0
  123. data/lib/wsdl/xmlSchema/simpleContent.rb +69 -0
  124. data/lib/wsdl/xmlSchema/simpleExtension.rb +54 -0
  125. data/lib/wsdl/xmlSchema/simpleRestriction.rb +91 -0
  126. data/lib/wsdl/xmlSchema/simpleType.rb +80 -0
  127. data/lib/wsdl/xmlSchema/unique.rb +34 -0
  128. data/lib/wsdl/xmlSchema/xsd2ruby.rb +107 -0
  129. data/lib/xsd/charset.rb +187 -0
  130. data/lib/xsd/codegen.rb +12 -0
  131. data/lib/xsd/codegen/classdef.rb +203 -0
  132. data/lib/xsd/codegen/commentdef.rb +34 -0
  133. data/lib/xsd/codegen/gensupport.rb +168 -0
  134. data/lib/xsd/codegen/methoddef.rb +70 -0
  135. data/lib/xsd/codegen/moduledef.rb +191 -0
  136. data/lib/xsd/datatypes.rb +1282 -0
  137. data/lib/xsd/datatypes1999.rb +20 -0
  138. data/lib/xsd/iconvcharset.rb +33 -0
  139. data/lib/xsd/mapping.rb +42 -0
  140. data/lib/xsd/namedelements.rb +124 -0
  141. data/lib/xsd/ns.rb +146 -0
  142. data/lib/xsd/qname.rb +78 -0
  143. data/lib/xsd/xmlparser.rb +61 -0
  144. data/lib/xsd/xmlparser/parser.rb +96 -0
  145. data/lib/xsd/xmlparser/rexmlparser.rb +54 -0
  146. data/lib/xsd/xmlparser/xmlparser.rb +50 -0
  147. data/lib/xsd/xmlparser/xmlscanner.rb +147 -0
  148. data/test/16runner.rb +68 -0
  149. data/test/interopR2/README.txt +2 -0
  150. data/test/interopR2/SOAPBuildersInterop_R2.wsdl +461 -0
  151. data/test/interopR2/SOAPBuildersInterop_R2GrB.wsdl +19 -0
  152. data/test/interopR2/base.rb +288 -0
  153. data/test/interopR2/client.NetRemoting.rb +17 -0
  154. data/test/interopR2/client.NetRemoting.rb.result +3410 -0
  155. data/test/interopR2/client.NetRemoting_Base.log +6279 -0
  156. data/test/interopR2/client.NetRemoting_GroupB.log +1188 -0
  157. data/test/interopR2/client.rb +1228 -0
  158. data/test/interopR2/client4S4C.rb +15 -0
  159. data/test/interopR2/client4S4C2.rb +14 -0
  160. data/test/interopR2/client4S4C2_Base.log +4955 -0
  161. data/test/interopR2/client4S4C2_GroupB.log +1000 -0
  162. data/test/interopR2/client4S4C_Base.log +4635 -0
  163. data/test/interopR2/client4S4C_GroupB.log +900 -0
  164. data/test/interopR2/clientASP.NET.rb +17 -0
  165. data/test/interopR2/clientASP.NET_Base.log +5468 -0
  166. data/test/interopR2/clientASP.NET_GroupB.log +977 -0
  167. data/test/interopR2/clientApacheAxis.rb +16 -0
  168. data/test/interopR2/clientApacheAxis_Base.log +3171 -0
  169. data/test/interopR2/clientApacheAxis_GroupB.log +498 -0
  170. data/test/interopR2/clientApacheSOAP.rb +17 -0
  171. data/test/interopR2/clientApacheSOAP_Base.log +3171 -0
  172. data/test/interopR2/clientBEAWebLogic.rb +17 -0
  173. data/test/interopR2/clientBEAWebLogic_Base.log +3171 -0
  174. data/test/interopR2/clientBEAWebLogic_GroupB.log +498 -0
  175. data/test/interopR2/clientBase.rb +1970 -0
  176. data/test/interopR2/clientCapeConnect.rb +18 -0
  177. data/test/interopR2/clientCapeConnect_Base.log +2126 -0
  178. data/test/interopR2/clientDelphi.rb +19 -0
  179. data/test/interopR2/clientDelphi_Base.log +0 -0
  180. data/test/interopR2/clientEasySoap.rb +14 -0
  181. data/test/interopR2/clientEasySoap_Base.log +6187 -0
  182. data/test/interopR2/clientEasySoap_GroupB.log +1076 -0
  183. data/test/interopR2/clientFrontier.rb +25 -0
  184. data/test/interopR2/clientFrontier_Base.log +5188 -0
  185. data/test/interopR2/clientGLUE.rb +32 -0
  186. data/test/interopR2/clientHP.rb +13 -0
  187. data/test/interopR2/clientHP_Base.log +3171 -0
  188. data/test/interopR2/clientHP_GroupB.log +498 -0
  189. data/test/interopR2/clientJAX-RPC.rb +19 -0
  190. data/test/interopR2/clientJSOAP.rb +14 -0
  191. data/test/interopR2/clientJSOAP_Base.log +4465 -0
  192. data/test/interopR2/clientJSOAP_GroupB.log +824 -0
  193. data/test/interopR2/clientKafkaXSLT.rb +15 -0
  194. data/test/interopR2/clientKafkaXSLT_Base.log +10299 -0
  195. data/test/interopR2/clientKafkaXSLT_GroupB.log +1739 -0
  196. data/test/interopR2/clientMSSOAPToolkit2.0.rb +17 -0
  197. data/test/interopR2/clientMSSOAPToolkit2.0_Base.log +4805 -0
  198. data/test/interopR2/clientMSSOAPToolkit2.0_GroupB.log +871 -0
  199. data/test/interopR2/clientMSSOAPToolkit3.0.rb +17 -0
  200. data/test/interopR2/clientMSSOAPToolkit3.0_Base.log +5076 -0
  201. data/test/interopR2/clientMSSOAPToolkit3.0_GroupB.log +908 -0
  202. data/test/interopR2/clientNuSOAP.rb +19 -0
  203. data/test/interopR2/clientNuSOAP_Base.log +5076 -0
  204. data/test/interopR2/clientNuSOAP_GroupB.log +958 -0
  205. data/test/interopR2/clientNuWave.rb +15 -0
  206. data/test/interopR2/clientNuWave_Base.log +2019 -0
  207. data/test/interopR2/clientOpenLink.rb +15 -0
  208. data/test/interopR2/clientOpenLink_Base.log +6171 -0
  209. data/test/interopR2/clientOpenLink_GroupB.log +1094 -0
  210. data/test/interopR2/clientOracle.rb +15 -0
  211. data/test/interopR2/clientOracle_Base.log +5594 -0
  212. data/test/interopR2/clientPEAR.rb +18 -0
  213. data/test/interopR2/clientPEAR_Base.log +6261 -0
  214. data/test/interopR2/clientPEAR_GroupB.log +1106 -0
  215. data/test/interopR2/clientPhalanx.rb +18 -0
  216. data/test/interopR2/clientPhalanx_Base.log +41036 -0
  217. data/test/interopR2/clientPhalanx_GroupB.log +6519 -0
  218. data/test/interopR2/clientSIMACE.rb +18 -0
  219. data/test/interopR2/clientSIMACE_Base.log +6171 -0
  220. data/test/interopR2/clientSIMACE_GroupB.log +1093 -0
  221. data/test/interopR2/clientSOAP4R.rb +18 -0
  222. data/test/interopR2/clientSOAP4R.rb.result +3409 -0
  223. data/test/interopR2/clientSOAP4R_Base.log +6366 -0
  224. data/test/interopR2/clientSOAP4R_GroupB.log +1112 -0
  225. data/test/interopR2/clientSOAP__Lite.rb +14 -0
  226. data/test/interopR2/clientSQLData.rb +18 -0
  227. data/test/interopR2/clientSQLData_Base.log +4857 -0
  228. data/test/interopR2/clientSQLData_GroupB.log +770 -0
  229. data/test/interopR2/clientSilverStream.rb +17 -0
  230. data/test/interopR2/clientSilverStream_Base.log +3171 -0
  231. data/test/interopR2/clientSpray2001.rb +17 -0
  232. data/test/interopR2/clientSpray2001_Base.log +8187 -0
  233. data/test/interopR2/clientSpray2001_GroupB.log +1408 -0
  234. data/test/interopR2/clientSun.rb +19 -0
  235. data/test/interopR2/clientSun_Base.log +4641 -0
  236. data/test/interopR2/clientSun_GroupB.log +856 -0
  237. data/test/interopR2/clientVWOpentalkSoap.rb +19 -0
  238. data/test/interopR2/clientVWOpentalkSoap_Base.log +5402 -0
  239. data/test/interopR2/clientVWOpentalkSoap_GroupB.log +972 -0
  240. data/test/interopR2/clientWASP.rb +19 -0
  241. data/test/interopR2/clientWASPC.rb +18 -0
  242. data/test/interopR2/clientWASPC_Base.log +4187 -0
  243. data/test/interopR2/clientWASPC_GroupB.log +763 -0
  244. data/test/interopR2/clientWASP_Base.log +5414 -0
  245. data/test/interopR2/clientWASP_GroupB.log +970 -0
  246. data/test/interopR2/clientWebMethods.rb +15 -0
  247. data/test/interopR2/clientWebMethods_Base.log +3075 -0
  248. data/test/interopR2/clientWebMethods_GroupB.log +483 -0
  249. data/test/interopR2/clientWhiteMesa.rb +28 -0
  250. data/test/interopR2/clientWhiteMesa_Base.log +4359 -0
  251. data/test/interopR2/clientWhiteMesa_GroupB.log +808 -0
  252. data/test/interopR2/clientWingfoot.rb +15 -0
  253. data/test/interopR2/clientWingfoot_Base.log +4445 -0
  254. data/test/interopR2/clientWingfoot_GroupB.log +848 -0
  255. data/test/interopR2/clientXMLBus.rb +19 -0
  256. data/test/interopR2/clientXMLBus_Base.log +3075 -0
  257. data/test/interopR2/clientXMLBus_GroupB.log +483 -0
  258. data/test/interopR2/clientXMLRPC-EPI.rb +17 -0
  259. data/test/interopR2/clientXSOAP.rb +14 -0
  260. data/test/interopR2/clientXSOAP_Base.log +4445 -0
  261. data/test/interopR2/clientZSI.rb +19 -0
  262. data/test/interopR2/clienteSOAP.rb +18 -0
  263. data/test/interopR2/clienteSOAP_Base.log +8728 -0
  264. data/test/interopR2/clientgSOAP.rb +18 -0
  265. data/test/interopR2/clientgSOAP_Base.log +4689 -0
  266. data/test/interopR2/clientgSOAP_GroupB.log +1014 -0
  267. data/test/interopR2/clientkSOAP.rb +17 -0
  268. data/test/interopR2/clientkSOAP_Base.log +5625 -0
  269. data/test/interopR2/iSimonReg.rb +112 -0
  270. data/test/interopR2/interopResultBase.rb +114 -0
  271. data/test/interopR2/interopService.rb +247 -0
  272. data/test/interopR2/result_client.NetRemoting.txt +4593 -0
  273. data/test/interopR2/rwikiInteropService.rb +105 -0
  274. data/test/interopR2/server.cgi +270 -0
  275. data/test/interopR2/server.rb +274 -0
  276. data/test/interopR2/simonReg.rb +123 -0
  277. data/test/interopR2/test.sh +49 -0
  278. data/test/interopR4/client.rb +112 -0
  279. data/test/runner.rb +9 -0
  280. data/test/sm11/classDef.rb +156 -0
  281. data/test/sm11/client.rb +542 -0
  282. data/test/sm11/driver.rb +183 -0
  283. data/test/sm11/servant.rb +1067 -0
  284. data/test/sm11/server.rb +25 -0
  285. data/test/soap/asp.net/hello.wsdl +96 -0
  286. data/test/soap/asp.net/test_aspdotnet.rb +112 -0
  287. data/test/soap/calc/calc.rb +17 -0
  288. data/test/soap/calc/calc2.rb +29 -0
  289. data/test/soap/calc/server.cgi +13 -0
  290. data/test/soap/calc/server.rb +17 -0
  291. data/test/soap/calc/server2.rb +20 -0
  292. data/test/soap/calc/test_calc.rb +49 -0
  293. data/test/soap/calc/test_calc2.rb +53 -0
  294. data/test/soap/calc/test_calc_cgi.rb +69 -0
  295. data/test/soap/fault/test_customfault.rb +58 -0
  296. data/test/soap/header/server.cgi +119 -0
  297. data/test/soap/header/test_authheader.rb +240 -0
  298. data/test/soap/header/test_authheader_cgi.rb +121 -0
  299. data/test/soap/header/test_simplehandler.rb +116 -0
  300. data/test/soap/helloworld/hw_s.rb +16 -0
  301. data/test/soap/helloworld/test_helloworld.rb +41 -0
  302. data/test/soap/literalArrayMapping/amazonEc.rb +4778 -0
  303. data/test/soap/literalArrayMapping/amazonEcDriver.rb +172 -0
  304. data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
  305. data/test/soap/literalArrayMapping/test_definedarray.rb +36 -0
  306. data/test/soap/marshal/marshaltestlib.rb +494 -0
  307. data/test/soap/marshal/test_digraph.rb +56 -0
  308. data/test/soap/marshal/test_marshal.rb +26 -0
  309. data/test/soap/marshal/test_struct.rb +47 -0
  310. data/test/soap/ssl/README +1 -0
  311. data/test/soap/ssl/ca.cert +23 -0
  312. data/test/soap/ssl/client.cert +19 -0
  313. data/test/soap/ssl/client.key +15 -0
  314. data/test/soap/ssl/server.cert +19 -0
  315. data/test/soap/ssl/server.key +15 -0
  316. data/test/soap/ssl/sslsvr.rb +57 -0
  317. data/test/soap/ssl/subca.cert +21 -0
  318. data/test/soap/ssl/test_ssl.rb +245 -0
  319. data/test/soap/struct/test_struct.rb +77 -0
  320. data/test/soap/styleuse/client.rb +20 -0
  321. data/test/soap/styleuse/server.rb +86 -0
  322. data/test/soap/swa/test_file.rb +73 -0
  323. data/test/soap/test_basetype.rb +976 -0
  324. data/test/soap/test_custommap.rb +108 -0
  325. data/test/soap/test_empty.rb +79 -0
  326. data/test/soap/test_envelopenamespace.rb +92 -0
  327. data/test/soap/test_httpconfigloader.rb +39 -0
  328. data/test/soap/test_mapping.rb +59 -0
  329. data/test/soap/test_no_indent.rb +86 -0
  330. data/test/soap/test_property.rb +424 -0
  331. data/test/soap/test_response_as_xml.rb +95 -0
  332. data/test/soap/test_soapelement.rb +120 -0
  333. data/test/soap/test_streamhandler.rb +262 -0
  334. data/test/soap/test_styleuse.rb +333 -0
  335. data/test/soap/wsdlDriver/README.txt +2 -0
  336. data/test/soap/wsdlDriver/calc.wsdl +126 -0
  337. data/test/soap/wsdlDriver/document.wsdl +54 -0
  338. data/test/soap/wsdlDriver/echo_version.rb +29 -0
  339. data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
  340. data/test/soap/wsdlDriver/test_calc.rb +100 -0
  341. data/test/soap/wsdlDriver/test_document.rb +78 -0
  342. data/test/soap/wsdlDriver/test_simpletype.rb +87 -0
  343. data/test/wsdl/abstract/abstract.wsdl +97 -0
  344. data/test/wsdl/abstract/test_abstract.rb +130 -0
  345. data/test/wsdl/any/any.wsdl +51 -0
  346. data/test/wsdl/any/expectedDriver.rb +46 -0
  347. data/test/wsdl/any/expectedEcho.rb +18 -0
  348. data/test/wsdl/any/expectedService.rb +42 -0
  349. data/test/wsdl/any/test_any.rb +193 -0
  350. data/test/wsdl/axisArray/axisArray.wsdl +60 -0
  351. data/test/wsdl/axisArray/itemList.rb +14 -0
  352. data/test/wsdl/axisArray/test_axisarray.rb +69 -0
  353. data/test/wsdl/choice/choice.wsdl +91 -0
  354. data/test/wsdl/choice/test_choice.rb +134 -0
  355. data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
  356. data/test/wsdl/complexcontent/test_echo.rb +101 -0
  357. data/test/wsdl/datetime/DatetimeService.rb +44 -0
  358. data/test/wsdl/datetime/datetime.rb +0 -0
  359. data/test/wsdl/datetime/datetime.wsdl +45 -0
  360. data/test/wsdl/datetime/datetimeServant.rb +21 -0
  361. data/test/wsdl/datetime/test_datetime.rb +82 -0
  362. data/test/wsdl/document/array/double.wsdl +72 -0
  363. data/test/wsdl/document/array/test_array.rb +117 -0
  364. data/test/wsdl/document/document.wsdl +74 -0
  365. data/test/wsdl/document/number.wsdl +54 -0
  366. data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
  367. data/test/wsdl/document/test_nosoapaction.rb +109 -0
  368. data/test/wsdl/document/test_number.rb +99 -0
  369. data/test/wsdl/document/test_rpc.rb +211 -0
  370. data/test/wsdl/emptycomplextype.wsdl +31 -0
  371. data/test/wsdl/list/list.wsdl +93 -0
  372. data/test/wsdl/list/test_list.rb +134 -0
  373. data/test/wsdl/map/map.wsdl +92 -0
  374. data/test/wsdl/map/map.xml +43 -0
  375. data/test/wsdl/map/test_map.rb +99 -0
  376. data/test/wsdl/marshal/person.wsdl +21 -0
  377. data/test/wsdl/marshal/person_org.rb +18 -0
  378. data/test/wsdl/marshal/test_wsdlmarshal.rb +79 -0
  379. data/test/wsdl/multiplefault.wsdl +68 -0
  380. data/test/wsdl/overload/overload.wsdl +80 -0
  381. data/test/wsdl/overload/test_overload.rb +118 -0
  382. data/test/wsdl/qualified/lp.wsdl +47 -0
  383. data/test/wsdl/qualified/lp.xsd +26 -0
  384. data/test/wsdl/qualified/np.wsdl +51 -0
  385. data/test/wsdl/qualified/test_qualified.rb +145 -0
  386. data/test/wsdl/qualified/test_unqualified.rb +159 -0
  387. data/test/wsdl/raa/RAA.rb +120 -0
  388. data/test/wsdl/raa/RAAServant.rb +107 -0
  389. data/test/wsdl/raa/RAAService.rb +120 -0
  390. data/test/wsdl/raa/README.txt +8 -0
  391. data/test/wsdl/raa/raa.wsdl +264 -0
  392. data/test/wsdl/raa/server.rb +103 -0
  393. data/test/wsdl/raa/test_raa.rb +91 -0
  394. data/test/wsdl/ref/expectedProduct.rb +158 -0
  395. data/test/wsdl/ref/product.wsdl +147 -0
  396. data/test/wsdl/ref/test_ref.rb +289 -0
  397. data/test/wsdl/rpc/rpc.wsdl +83 -0
  398. data/test/wsdl/rpc/test-rpc-lit.wsdl +364 -0
  399. data/test/wsdl/rpc/test_rpc.rb +173 -0
  400. data/test/wsdl/rpc/test_rpc_lit.rb +407 -0
  401. data/test/wsdl/simplecontent/simplecontent.wsdl +83 -0
  402. data/test/wsdl/simplecontent/test_simplecontent.rb +116 -0
  403. data/test/wsdl/simpletype/rpc/expectedClient.rb +34 -0
  404. data/test/wsdl/simpletype/rpc/expectedDriver.rb +55 -0
  405. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +19 -0
  406. data/test/wsdl/simpletype/rpc/expectedServant.rb +32 -0
  407. data/test/wsdl/simpletype/rpc/expectedService.rb +51 -0
  408. data/test/wsdl/simpletype/rpc/rpc.wsdl +80 -0
  409. data/test/wsdl/simpletype/rpc/test_rpc.rb +62 -0
  410. data/test/wsdl/simpletype/simpletype.wsdl +95 -0
  411. data/test/wsdl/simpletype/test_simpletype.rb +99 -0
  412. data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
  413. data/test/wsdl/soap/test_soapbodyparts.rb +79 -0
  414. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +19 -0
  415. data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +34 -0
  416. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +55 -0
  417. data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +32 -0
  418. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +44 -0
  419. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +51 -0
  420. data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
  421. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +31 -0
  422. data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
  423. data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +54 -0
  424. data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
  425. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +96 -0
  426. data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +79 -0
  427. data/test/wsdl/soaptype/soaptype.wsdl +61 -0
  428. data/test/wsdl/soaptype/test_soaptype.rb +160 -0
  429. data/test/wsdl/test_emptycomplextype.rb +21 -0
  430. data/test/wsdl/test_fault.rb +50 -0
  431. data/test/wsdl/test_multiplefault.rb +39 -0
  432. data/test/xsd/codegen/test_classdef.rb +214 -0
  433. data/test/xsd/noencoding.xml +4 -0
  434. data/test/xsd/test_noencoding.rb +32 -0
  435. data/test/xsd/test_ns.rb +20 -0
  436. data/test/xsd/test_xmlschemaparser.rb +22 -0
  437. data/test/xsd/test_xsd.rb +1523 -0
  438. data/test/xsd/xmllang.xml +43 -0
  439. data/test/xsd/xmlschema.xml +12 -0
  440. metadata +539 -0
@@ -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'
@@ -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'
@@ -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