rtiss_soap4r 1.6.0

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 (427) hide show
  1. data/bin/wsdl2ruby.rb +139 -0
  2. data/bin/xsd2ruby.rb +91 -0
  3. data/lib/soap/attachment.rb +109 -0
  4. data/lib/soap/attrproxy.rb +35 -0
  5. data/lib/soap/baseData.rb +1095 -0
  6. data/lib/soap/element.rb +278 -0
  7. data/lib/soap/encodingstyle/aspDotNetHandler.rb +208 -0
  8. data/lib/soap/encodingstyle/handler.rb +121 -0
  9. data/lib/soap/encodingstyle/literalHandler.rb +196 -0
  10. data/lib/soap/encodingstyle/soapHandler.rb +560 -0
  11. data/lib/soap/filter/filterchain.rb +52 -0
  12. data/lib/soap/filter/handler.rb +32 -0
  13. data/lib/soap/filter/streamhandler.rb +30 -0
  14. data/lib/soap/filter.rb +14 -0
  15. data/lib/soap/generator.rb +299 -0
  16. data/lib/soap/header/handler.rb +62 -0
  17. data/lib/soap/header/handlerset.rb +71 -0
  18. data/lib/soap/header/mappinghandler.rb +48 -0
  19. data/lib/soap/header/simplehandler.rb +45 -0
  20. data/lib/soap/httpconfigloader.rb +140 -0
  21. data/lib/soap/mapping/encodedregistry.rb +539 -0
  22. data/lib/soap/mapping/factory.rb +389 -0
  23. data/lib/soap/mapping/literalregistry.rb +392 -0
  24. data/lib/soap/mapping/mapping.rb +577 -0
  25. data/lib/soap/mapping/registry.rb +296 -0
  26. data/lib/soap/mapping/rubytypeFactory.rb +446 -0
  27. data/lib/soap/mapping/schemadefinition.rb +171 -0
  28. data/lib/soap/mapping/typeMap.rb +107 -0
  29. data/lib/soap/mapping/wsdlencodedregistry.rb +212 -0
  30. data/lib/soap/mapping/wsdlliteralregistry.rb +249 -0
  31. data/lib/soap/mapping.rb +13 -0
  32. data/lib/soap/marshal.rb +60 -0
  33. data/lib/soap/mimemessage.rb +243 -0
  34. data/lib/soap/nestedexception.rb +43 -0
  35. data/lib/soap/netHttpClient.rb +242 -0
  36. data/lib/soap/ns.rb +39 -0
  37. data/lib/soap/parser.rb +253 -0
  38. data/lib/soap/processor.rb +67 -0
  39. data/lib/soap/property.rb +340 -0
  40. data/lib/soap/proxy.rb +15 -0
  41. data/lib/soap/rpc/cgistub.rb +248 -0
  42. data/lib/soap/rpc/driver.rb +222 -0
  43. data/lib/soap/rpc/element.rb +375 -0
  44. data/lib/soap/rpc/httpserver.rb +143 -0
  45. data/lib/soap/rpc/methodDef.rb +69 -0
  46. data/lib/soap/rpc/proxy.rb +573 -0
  47. data/lib/soap/rpc/router.rb +663 -0
  48. data/lib/soap/rpc/rpc.rb +26 -0
  49. data/lib/soap/rpc/soaplet.rb +201 -0
  50. data/lib/soap/rpc/standaloneServer.rb +44 -0
  51. data/lib/soap/soap.rb +154 -0
  52. data/lib/soap/streamHandler.rb +306 -0
  53. data/lib/soap/version.rb +9 -0
  54. data/lib/soap/wsdlDriver.rb +165 -0
  55. data/lib/wsdl/binding.rb +66 -0
  56. data/lib/wsdl/data.rb +65 -0
  57. data/lib/wsdl/definitions.rb +237 -0
  58. data/lib/wsdl/documentation.rb +33 -0
  59. data/lib/wsdl/import.rb +81 -0
  60. data/lib/wsdl/importer.rb +39 -0
  61. data/lib/wsdl/info.rb +51 -0
  62. data/lib/wsdl/message.rb +55 -0
  63. data/lib/wsdl/operation.rb +152 -0
  64. data/lib/wsdl/operationBinding.rb +241 -0
  65. data/lib/wsdl/param.rb +94 -0
  66. data/lib/wsdl/parser.rb +165 -0
  67. data/lib/wsdl/part.rb +53 -0
  68. data/lib/wsdl/port.rb +67 -0
  69. data/lib/wsdl/portType.rb +76 -0
  70. data/lib/wsdl/service.rb +62 -0
  71. data/lib/wsdl/soap/address.rb +41 -0
  72. data/lib/wsdl/soap/binding.rb +50 -0
  73. data/lib/wsdl/soap/body.rb +59 -0
  74. data/lib/wsdl/soap/cgiStubCreator.rb +93 -0
  75. data/lib/wsdl/soap/classDefCreator.rb +434 -0
  76. data/lib/wsdl/soap/classDefCreatorSupport.rb +241 -0
  77. data/lib/wsdl/soap/classNameCreator.rb +55 -0
  78. data/lib/wsdl/soap/clientSkeltonCreator.rb +107 -0
  79. data/lib/wsdl/soap/complexType.rb +174 -0
  80. data/lib/wsdl/soap/data.rb +43 -0
  81. data/lib/wsdl/soap/definitions.rb +201 -0
  82. data/lib/wsdl/soap/driverCreator.rb +121 -0
  83. data/lib/wsdl/soap/element.rb +34 -0
  84. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +74 -0
  85. data/lib/wsdl/soap/fault.rb +57 -0
  86. data/lib/wsdl/soap/header.rb +87 -0
  87. data/lib/wsdl/soap/headerfault.rb +57 -0
  88. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +116 -0
  89. data/lib/wsdl/soap/mappingRegistryCreator.rb +59 -0
  90. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +377 -0
  91. data/lib/wsdl/soap/methodDefCreator.rb +200 -0
  92. data/lib/wsdl/soap/operation.rb +113 -0
  93. data/lib/wsdl/soap/servantSkeltonCreator.rb +92 -0
  94. data/lib/wsdl/soap/servletStubCreator.rb +105 -0
  95. data/lib/wsdl/soap/standaloneServerStubCreator.rb +101 -0
  96. data/lib/wsdl/soap/wsdl2ruby.rb +226 -0
  97. data/lib/wsdl/types.rb +45 -0
  98. data/lib/wsdl/wsdl.rb +25 -0
  99. data/lib/wsdl/xmlSchema/all.rb +25 -0
  100. data/lib/wsdl/xmlSchema/annotation.rb +35 -0
  101. data/lib/wsdl/xmlSchema/any.rb +62 -0
  102. data/lib/wsdl/xmlSchema/anyAttribute.rb +49 -0
  103. data/lib/wsdl/xmlSchema/attribute.rb +105 -0
  104. data/lib/wsdl/xmlSchema/attributeGroup.rb +69 -0
  105. data/lib/wsdl/xmlSchema/choice.rb +59 -0
  106. data/lib/wsdl/xmlSchema/complexContent.rb +98 -0
  107. data/lib/wsdl/xmlSchema/complexExtension.rb +120 -0
  108. data/lib/wsdl/xmlSchema/complexRestriction.rb +105 -0
  109. data/lib/wsdl/xmlSchema/complexType.rb +194 -0
  110. data/lib/wsdl/xmlSchema/content.rb +96 -0
  111. data/lib/wsdl/xmlSchema/data.rb +117 -0
  112. data/lib/wsdl/xmlSchema/element.rb +154 -0
  113. data/lib/wsdl/xmlSchema/enumeration.rb +37 -0
  114. data/lib/wsdl/xmlSchema/fractiondigits.rb +38 -0
  115. data/lib/wsdl/xmlSchema/group.rb +101 -0
  116. data/lib/wsdl/xmlSchema/import.rb +54 -0
  117. data/lib/wsdl/xmlSchema/importHandler.rb +46 -0
  118. data/lib/wsdl/xmlSchema/importer.rb +103 -0
  119. data/lib/wsdl/xmlSchema/include.rb +49 -0
  120. data/lib/wsdl/xmlSchema/length.rb +38 -0
  121. data/lib/wsdl/xmlSchema/list.rb +49 -0
  122. data/lib/wsdl/xmlSchema/maxexclusive.rb +38 -0
  123. data/lib/wsdl/xmlSchema/maxinclusive.rb +38 -0
  124. data/lib/wsdl/xmlSchema/maxlength.rb +38 -0
  125. data/lib/wsdl/xmlSchema/minexclusive.rb +38 -0
  126. data/lib/wsdl/xmlSchema/mininclusive.rb +38 -0
  127. data/lib/wsdl/xmlSchema/minlength.rb +38 -0
  128. data/lib/wsdl/xmlSchema/parser.rb +168 -0
  129. data/lib/wsdl/xmlSchema/pattern.rb +37 -0
  130. data/lib/wsdl/xmlSchema/ref.rb +34 -0
  131. data/lib/wsdl/xmlSchema/schema.rb +179 -0
  132. data/lib/wsdl/xmlSchema/sequence.rb +55 -0
  133. data/lib/wsdl/xmlSchema/simpleContent.rb +70 -0
  134. data/lib/wsdl/xmlSchema/simpleExtension.rb +63 -0
  135. data/lib/wsdl/xmlSchema/simpleRestriction.rb +133 -0
  136. data/lib/wsdl/xmlSchema/simpleType.rb +88 -0
  137. data/lib/wsdl/xmlSchema/totaldigits.rb +38 -0
  138. data/lib/wsdl/xmlSchema/union.rb +36 -0
  139. data/lib/wsdl/xmlSchema/unique.rb +35 -0
  140. data/lib/wsdl/xmlSchema/whitespace.rb +38 -0
  141. data/lib/wsdl/xmlSchema/xsd2ruby.rb +176 -0
  142. data/lib/xsd/charset.rb +190 -0
  143. data/lib/xsd/codegen/classdef.rb +209 -0
  144. data/lib/xsd/codegen/commentdef.rb +35 -0
  145. data/lib/xsd/codegen/gensupport.rb +277 -0
  146. data/lib/xsd/codegen/methoddef.rb +71 -0
  147. data/lib/xsd/codegen/moduledef.rb +209 -0
  148. data/lib/xsd/codegen.rb +13 -0
  149. data/lib/xsd/datatypes.rb +1466 -0
  150. data/lib/xsd/datatypes1999.rb +21 -0
  151. data/lib/xsd/iconvcharset.rb +34 -0
  152. data/lib/xsd/mapping.rb +69 -0
  153. data/lib/xsd/namedelements.rb +133 -0
  154. data/lib/xsd/ns.rb +183 -0
  155. data/lib/xsd/qname.rb +80 -0
  156. data/lib/xsd/xmlparser/libxmlparser.rb +116 -0
  157. data/lib/xsd/xmlparser/parser.rb +101 -0
  158. data/lib/xsd/xmlparser/rexmlparser.rb +59 -0
  159. data/lib/xsd/xmlparser/xmlparser.rb +51 -0
  160. data/lib/xsd/xmlparser/xmlscanner.rb +150 -0
  161. data/lib/xsd/xmlparser.rb +77 -0
  162. data/test/16runner.rb +69 -0
  163. data/test/helper.rb +7 -0
  164. data/test/interopR2/README.txt +2 -0
  165. data/test/interopR2/SOAPBuildersInterop_R2.wsdl +461 -0
  166. data/test/interopR2/SOAPBuildersInterop_R2GrB.wsdl +19 -0
  167. data/test/interopR2/base.rb +289 -0
  168. data/test/interopR2/client.NetRemoting.rb +18 -0
  169. data/test/interopR2/client.rb +1235 -0
  170. data/test/interopR2/client4S4C.rb +16 -0
  171. data/test/interopR2/client4S4C2.rb +15 -0
  172. data/test/interopR2/clientASP.NET.rb +18 -0
  173. data/test/interopR2/clientApacheAxis.rb +17 -0
  174. data/test/interopR2/clientApacheSOAP.rb +18 -0
  175. data/test/interopR2/clientBEAWebLogic.rb +18 -0
  176. data/test/interopR2/clientBase.rb +1968 -0
  177. data/test/interopR2/clientCapeConnect.rb +19 -0
  178. data/test/interopR2/clientDelphi.rb +20 -0
  179. data/test/interopR2/clientEasySoap.rb +15 -0
  180. data/test/interopR2/clientFrontier.rb +26 -0
  181. data/test/interopR2/clientGLUE.rb +33 -0
  182. data/test/interopR2/clientHP.rb +14 -0
  183. data/test/interopR2/clientJAX-RPC.rb +20 -0
  184. data/test/interopR2/clientJSOAP.rb +15 -0
  185. data/test/interopR2/clientKafkaXSLT.rb +16 -0
  186. data/test/interopR2/clientMSSOAPToolkit2.0.rb +18 -0
  187. data/test/interopR2/clientMSSOAPToolkit3.0.rb +18 -0
  188. data/test/interopR2/clientNuSOAP.rb +20 -0
  189. data/test/interopR2/clientNuWave.rb +16 -0
  190. data/test/interopR2/clientOpenLink.rb +16 -0
  191. data/test/interopR2/clientOracle.rb +16 -0
  192. data/test/interopR2/clientPEAR.rb +19 -0
  193. data/test/interopR2/clientPhalanx.rb +19 -0
  194. data/test/interopR2/clientSIMACE.rb +19 -0
  195. data/test/interopR2/clientSOAP4R.rb +19 -0
  196. data/test/interopR2/clientSOAP__Lite.rb +15 -0
  197. data/test/interopR2/clientSQLData.rb +19 -0
  198. data/test/interopR2/clientSilverStream.rb +18 -0
  199. data/test/interopR2/clientSpray2001.rb +18 -0
  200. data/test/interopR2/clientSun.rb +20 -0
  201. data/test/interopR2/clientVWOpentalkSoap.rb +20 -0
  202. data/test/interopR2/clientWASP.rb +20 -0
  203. data/test/interopR2/clientWASPC.rb +19 -0
  204. data/test/interopR2/clientWebMethods.rb +16 -0
  205. data/test/interopR2/clientWhiteMesa.rb +29 -0
  206. data/test/interopR2/clientWingfoot.rb +16 -0
  207. data/test/interopR2/clientXMLBus.rb +20 -0
  208. data/test/interopR2/clientXMLRPC-EPI.rb +18 -0
  209. data/test/interopR2/clientXSOAP.rb +15 -0
  210. data/test/interopR2/clientZSI.rb +20 -0
  211. data/test/interopR2/clienteSOAP.rb +19 -0
  212. data/test/interopR2/clientgSOAP.rb +19 -0
  213. data/test/interopR2/clientkSOAP.rb +18 -0
  214. data/test/interopR2/iSimonReg.rb +113 -0
  215. data/test/interopR2/interopResultBase.rb +115 -0
  216. data/test/interopR2/interopService.rb +248 -0
  217. data/test/interopR2/rwikiInteropService.rb +106 -0
  218. data/test/interopR2/server.cgi +271 -0
  219. data/test/interopR2/server.rb +276 -0
  220. data/test/interopR2/simonReg.rb +124 -0
  221. data/test/interopR2/test.sh +49 -0
  222. data/test/interopR4/client.rb +113 -0
  223. data/test/runner.rb +8 -0
  224. data/test/sm11/classDef.rb +157 -0
  225. data/test/sm11/client.rb +543 -0
  226. data/test/sm11/driver.rb +184 -0
  227. data/test/sm11/servant.rb +1068 -0
  228. data/test/sm11/server.rb +26 -0
  229. data/test/soap/asp.net/hello.wsdl +96 -0
  230. data/test/soap/asp.net/test_aspdotnet.rb +124 -0
  231. data/test/soap/auth/htdigest +2 -0
  232. data/test/soap/auth/htpasswd +2 -0
  233. data/test/soap/auth/test_basic.rb +118 -0
  234. data/test/soap/auth/test_digest.rb +119 -0
  235. data/test/soap/calc/calc.rb +18 -0
  236. data/test/soap/calc/calc2.rb +30 -0
  237. data/test/soap/calc/server.cgi +16 -0
  238. data/test/soap/calc/server.rb +18 -0
  239. data/test/soap/calc/server2.rb +21 -0
  240. data/test/soap/calc/test_calc.rb +53 -0
  241. data/test/soap/calc/test_calc2.rb +57 -0
  242. data/test/soap/calc/test_calc_cgi.rb +72 -0
  243. data/test/soap/case/test_mapping.rb +58 -0
  244. data/test/soap/fault/test_customfault.rb +61 -0
  245. data/test/soap/fault/test_fault.rb +47 -0
  246. data/test/soap/fault/test_soaparray.rb +36 -0
  247. data/test/soap/filter/test_filter.rb +147 -0
  248. data/test/soap/header/server.cgi +121 -0
  249. data/test/soap/header/test_authheader.rb +241 -0
  250. data/test/soap/header/test_authheader_cgi.rb +122 -0
  251. data/test/soap/header/test_simplehandler.rb +117 -0
  252. data/test/soap/helloworld/hw_s.rb +17 -0
  253. data/test/soap/helloworld/test_helloworld.rb +45 -0
  254. data/test/soap/htpasswd +2 -0
  255. data/test/soap/literalArrayMapping/amazonEc.rb +4779 -0
  256. data/test/soap/literalArrayMapping/amazonEcDriver.rb +173 -0
  257. data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
  258. data/test/soap/literalArrayMapping/test_definedarray.rb +35 -0
  259. data/test/soap/marshal/marshaltestlib.rb +498 -0
  260. data/test/soap/marshal/test_digraph.rb +57 -0
  261. data/test/soap/marshal/test_marshal.rb +28 -0
  262. data/test/soap/marshal/test_struct.rb +48 -0
  263. data/test/soap/ssl/README +1 -0
  264. data/test/soap/ssl/ca.cert +23 -0
  265. data/test/soap/ssl/client.cert +19 -0
  266. data/test/soap/ssl/client.key +15 -0
  267. data/test/soap/ssl/server.cert +19 -0
  268. data/test/soap/ssl/server.key +15 -0
  269. data/test/soap/ssl/sslsvr.rb +59 -0
  270. data/test/soap/ssl/subca.cert +21 -0
  271. data/test/soap/ssl/test_ssl.rb +236 -0
  272. data/test/soap/struct/test_struct.rb +71 -0
  273. data/test/soap/styleuse/client.rb +21 -0
  274. data/test/soap/styleuse/server.rb +87 -0
  275. data/test/soap/swa/test_file.rb +76 -0
  276. data/test/soap/test_basetype.rb +1091 -0
  277. data/test/soap/test_cookie.rb +113 -0
  278. data/test/soap/test_custom_ns.rb +106 -0
  279. data/test/soap/test_custommap.rb +111 -0
  280. data/test/soap/test_empty.rb +106 -0
  281. data/test/soap/test_envelopenamespace.rb +86 -0
  282. data/test/soap/test_extraattr.rb +55 -0
  283. data/test/soap/test_generator.rb +32 -0
  284. data/test/soap/test_httpconfigloader.rb +72 -0
  285. data/test/soap/test_mapping.rb +132 -0
  286. data/test/soap/test_nestedexception.rb +71 -0
  287. data/test/soap/test_nil.rb +71 -0
  288. data/test/soap/test_no_indent.rb +89 -0
  289. data/test/soap/test_property.rb +429 -0
  290. data/test/soap/test_response_as_xml.rb +118 -0
  291. data/test/soap/test_soapelement.rb +139 -0
  292. data/test/soap/test_streamhandler.rb +271 -0
  293. data/test/soap/test_styleuse.rb +327 -0
  294. data/test/soap/wsdlDriver/README.txt +2 -0
  295. data/test/soap/wsdlDriver/calc.wsdl +126 -0
  296. data/test/soap/wsdlDriver/document.wsdl +54 -0
  297. data/test/soap/wsdlDriver/echo_version.rb +30 -0
  298. data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
  299. data/test/soap/wsdlDriver/test_calc.rb +72 -0
  300. data/test/soap/wsdlDriver/test_document.rb +72 -0
  301. data/test/soap/wsdlDriver/test_simpletype.rb +82 -0
  302. data/test/testutil.rb +55 -0
  303. data/test/wsdl/abstract/abstract.wsdl +176 -0
  304. data/test/wsdl/abstract/test_abstract.rb +160 -0
  305. data/test/wsdl/anonymous/expectedClassDef.rb +129 -0
  306. data/test/wsdl/anonymous/expectedDriver.rb +60 -0
  307. data/test/wsdl/anonymous/expectedMappingRegistry.rb +177 -0
  308. data/test/wsdl/anonymous/lp.wsdl +147 -0
  309. data/test/wsdl/anonymous/test_anonymous.rb +131 -0
  310. data/test/wsdl/any/any.wsdl +114 -0
  311. data/test/wsdl/any/expectedDriver.rb +69 -0
  312. data/test/wsdl/any/expectedEcho.rb +58 -0
  313. data/test/wsdl/any/expectedMappingRegistry.rb +64 -0
  314. data/test/wsdl/any/expectedService.rb +70 -0
  315. data/test/wsdl/any/test_any.rb +194 -0
  316. data/test/wsdl/axisArray/axisArray.wsdl +87 -0
  317. data/test/wsdl/axisArray/test_axisarray.rb +125 -0
  318. data/test/wsdl/choice/choice.wsdl +167 -0
  319. data/test/wsdl/choice/test_choice.rb +311 -0
  320. data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
  321. data/test/wsdl/complexcontent/test_echo.rb +91 -0
  322. data/test/wsdl/datetime/DatetimeService.rb +45 -0
  323. data/test/wsdl/datetime/datetime.rb +0 -0
  324. data/test/wsdl/datetime/datetime.wsdl +45 -0
  325. data/test/wsdl/datetime/datetimeServant.rb +23 -0
  326. data/test/wsdl/datetime/test_datetime.rb +88 -0
  327. data/test/wsdl/document/array/double.wsdl +161 -0
  328. data/test/wsdl/document/array/test_array.rb +202 -0
  329. data/test/wsdl/document/document.wsdl +76 -0
  330. data/test/wsdl/document/number.wsdl +54 -0
  331. data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
  332. data/test/wsdl/document/test_nosoapaction.rb +103 -0
  333. data/test/wsdl/document/test_number.rb +93 -0
  334. data/test/wsdl/document/test_rpc.rb +356 -0
  335. data/test/wsdl/emptycomplextype.wsdl +31 -0
  336. data/test/wsdl/fault/fault.wsdl +79 -0
  337. data/test/wsdl/fault/multifault.wsdl +96 -0
  338. data/test/wsdl/fault/test_fault.rb +120 -0
  339. data/test/wsdl/fault/test_multifault.rb +135 -0
  340. data/test/wsdl/group/expectedClassdef.rb +59 -0
  341. data/test/wsdl/group/expectedDriver.rb +52 -0
  342. data/test/wsdl/group/expectedMappingRegistry.rb +68 -0
  343. data/test/wsdl/group/group.wsdl +88 -0
  344. data/test/wsdl/group/test_rpc.rb +146 -0
  345. data/test/wsdl/list/list.wsdl +93 -0
  346. data/test/wsdl/list/test_list.rb +125 -0
  347. data/test/wsdl/map/map.wsdl +92 -0
  348. data/test/wsdl/map/map.xml +43 -0
  349. data/test/wsdl/map/test_map.rb +100 -0
  350. data/test/wsdl/marshal/person.wsdl +21 -0
  351. data/test/wsdl/marshal/person_org.rb +24 -0
  352. data/test/wsdl/marshal/test_wsdlmarshal.rb +76 -0
  353. data/test/wsdl/multiplefault.wsdl +75 -0
  354. data/test/wsdl/oneway/oneway.wsdl +36 -0
  355. data/test/wsdl/oneway/test_oneway.rb +109 -0
  356. data/test/wsdl/overload/expectedClient.rb +38 -0
  357. data/test/wsdl/overload/expectedDriver.rb +62 -0
  358. data/test/wsdl/overload/expectedServant.rb +36 -0
  359. data/test/wsdl/overload/overload.wsdl +70 -0
  360. data/test/wsdl/overload/test_overload.rb +132 -0
  361. data/test/wsdl/qualified/lp.wsdl +47 -0
  362. data/test/wsdl/qualified/lp.xsd +26 -0
  363. data/test/wsdl/qualified/np.wsdl +51 -0
  364. data/test/wsdl/qualified/test_qualified.rb +138 -0
  365. data/test/wsdl/qualified/test_unqualified.rb +139 -0
  366. data/test/wsdl/raa/RAAService.rb +126 -0
  367. data/test/wsdl/raa/README.txt +8 -0
  368. data/test/wsdl/raa/expectedClassDef.rb +101 -0
  369. data/test/wsdl/raa/expectedDriver.rb +97 -0
  370. data/test/wsdl/raa/expectedMappingRegistry.rb +122 -0
  371. data/test/wsdl/raa/raa.wsdl +264 -0
  372. data/test/wsdl/raa/test_raa.rb +127 -0
  373. data/test/wsdl/ref/expectedDriver.rb +52 -0
  374. data/test/wsdl/ref/expectedProduct.rb +244 -0
  375. data/test/wsdl/ref/product.wsdl +147 -0
  376. data/test/wsdl/ref/test_ref.rb +269 -0
  377. data/test/wsdl/rpc/rpc.wsdl +109 -0
  378. data/test/wsdl/rpc/test-rpc-lit.wsdl +371 -0
  379. data/test/wsdl/rpc/test_rpc.rb +177 -0
  380. data/test/wsdl/rpc/test_rpc_lit.rb +471 -0
  381. data/test/wsdl/simplecontent/simplecontent.wsdl +84 -0
  382. data/test/wsdl/simplecontent/test_simplecontent.rb +103 -0
  383. data/test/wsdl/simpletype/rpc/expectedClient.rb +35 -0
  384. data/test/wsdl/simpletype/rpc/expectedDriver.rb +59 -0
  385. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +37 -0
  386. data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +58 -0
  387. data/test/wsdl/simpletype/rpc/expectedServant.rb +33 -0
  388. data/test/wsdl/simpletype/rpc/expectedService.rb +56 -0
  389. data/test/wsdl/simpletype/rpc/rpc.wsdl +98 -0
  390. data/test/wsdl/simpletype/rpc/test_rpc.rb +53 -0
  391. data/test/wsdl/simpletype/simpletype.wsdl +114 -0
  392. data/test/wsdl/simpletype/test_simpletype.rb +93 -0
  393. data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
  394. data/test/wsdl/soap/test_soapbodyparts.rb +80 -0
  395. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +22 -0
  396. data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +35 -0
  397. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +59 -0
  398. data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +37 -0
  399. data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +33 -0
  400. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +49 -0
  401. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +56 -0
  402. data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
  403. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +38 -0
  404. data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
  405. data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +54 -0
  406. data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
  407. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +84 -0
  408. data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +103 -0
  409. data/test/wsdl/soaptype/soaptype.wsdl +61 -0
  410. data/test/wsdl/soaptype/test_soaptype.rb +179 -0
  411. data/test/wsdl/test_emptycomplextype.rb +22 -0
  412. data/test/wsdl/test_fault.rb +51 -0
  413. data/test/wsdl/test_multiplefault.rb +42 -0
  414. data/test/xsd/codegen/test_classdef.rb +245 -0
  415. data/test/xsd/noencoding.xml +4 -0
  416. data/test/xsd/test_noencoding.rb +33 -0
  417. data/test/xsd/test_ns.rb +42 -0
  418. data/test/xsd/test_xmlschemaparser.rb +23 -0
  419. data/test/xsd/test_xsd.rb +1639 -0
  420. data/test/xsd/xmllang.xml +43 -0
  421. data/test/xsd/xmlschema.xml +12 -0
  422. data/test/xsd/xsd2ruby/expected_mysample.rb +66 -0
  423. data/test/xsd/xsd2ruby/expected_mysample_mapper.rb +12 -0
  424. data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +52 -0
  425. data/test/xsd/xsd2ruby/section.xsd +49 -0
  426. data/test/xsd/xsd2ruby/test_xsd2ruby.rb +91 -0
  427. metadata +489 -0
@@ -0,0 +1,201 @@
1
+ # encoding: ASCII-8BIT
2
+ # SOAP4R - SOAP handler servlet for WEBrick
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'webrick/httpservlet/abstract'
11
+ require 'webrick/httpstatus'
12
+ require 'soap/rpc/router'
13
+ require 'soap/streamHandler'
14
+ begin
15
+ require 'stringio'
16
+ require 'zlib'
17
+ rescue LoadError
18
+ warn("Loading stringio or zlib failed. No gzipped response supported.") if $DEBUG
19
+ end
20
+
21
+
22
+ warn("Overriding WEBrick::Log#debug") if $DEBUG
23
+ require 'webrick/log'
24
+ module WEBrick
25
+ class Log < BasicLog
26
+ alias __debug debug
27
+ def debug(msg = nil)
28
+ if block_given? and msg.nil?
29
+ __debug(yield)
30
+ else
31
+ __debug(msg)
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+
38
+ module SOAP
39
+ module RPC
40
+
41
+
42
+ class SOAPlet < WEBrick::HTTPServlet::AbstractServlet
43
+ public
44
+ attr_reader :options
45
+ attr_accessor :authenticator
46
+
47
+ def initialize(router = nil)
48
+ @router = router || ::SOAP::RPC::Router.new(self.class.name)
49
+ @options = {}
50
+ @authenticator = nil
51
+ @config = {}
52
+ end
53
+
54
+ def allow_content_encoding_gzip=(allow)
55
+ @options[:allow_content_encoding_gzip] = allow
56
+ end
57
+
58
+ ###
59
+ ## Servlet interfaces for WEBrick.
60
+ #
61
+ def get_instance(config, *options)
62
+ @config = config
63
+ self
64
+ end
65
+
66
+ def require_path_info?
67
+ false
68
+ end
69
+
70
+ def do_GET(req, res)
71
+ res.header['Allow'] = 'POST'
72
+ raise WEBrick::HTTPStatus::MethodNotAllowed, "GET request not allowed"
73
+ end
74
+
75
+ def do_POST(req, res)
76
+ logger.debug { "SOAP request: " + req.body } if logger
77
+ if @authenticator
78
+ @authenticator.authenticate(req, res)
79
+ # you can check authenticated user with SOAP::RPC::SOAPlet.user
80
+ end
81
+ begin
82
+ conn_data = ::SOAP::StreamHandler::ConnectionData.new
83
+ setup_req(conn_data, req)
84
+ @router.external_ces = @options[:external_ces]
85
+ Mapping.protect_threadvars(:SOAPlet) do
86
+ SOAPlet.user = req.user
87
+ SOAPlet.cookies = req.cookies
88
+ conn_data = @router.route(conn_data)
89
+ setup_res(conn_data, req, res)
90
+ end
91
+ rescue Exception => e
92
+ conn_data = @router.create_fault_response(e)
93
+ res.status = WEBrick::HTTPStatus::RC_INTERNAL_SERVER_ERROR
94
+ res.body = conn_data.send_string
95
+ res['content-type'] = conn_data.send_contenttype || "text/xml"
96
+ end
97
+ if res.body.is_a?(IO)
98
+ res.chunked = true
99
+ logger.debug { "SOAP response: (chunked response not logged)" } if logger
100
+ else
101
+ logger.debug { "SOAP response: " + res.body } if logger
102
+ end
103
+ end
104
+
105
+ def self.cookies
106
+ get_variable(:Cookies)
107
+ end
108
+
109
+ def self.cookies=(cookies)
110
+ set_variable(:Cookies, cookies)
111
+ end
112
+
113
+ def self.user
114
+ get_variable(:User)
115
+ end
116
+
117
+ def self.user=(user)
118
+ set_variable(:User, user)
119
+ end
120
+
121
+ private
122
+
123
+ def self.get_variable(name)
124
+ if var = Thread.current[:SOAPlet]
125
+ var[name]
126
+ else
127
+ nil
128
+ end
129
+ end
130
+
131
+ def self.set_variable(name, value)
132
+ var = Thread.current[:SOAPlet] ||= {}
133
+ var[name] = value
134
+ end
135
+
136
+ def logger
137
+ @config[:Logger]
138
+ end
139
+
140
+ def setup_req(conn_data, req)
141
+ conn_data.receive_string = req.body
142
+ conn_data.receive_contenttype = req['content-type']
143
+ conn_data.soapaction = parse_soapaction(req.meta_vars['HTTP_SOAPACTION'])
144
+ end
145
+
146
+ def setup_res(conn_data, req, res)
147
+ res['content-type'] = conn_data.send_contenttype
148
+ cookies = SOAPlet.cookies
149
+ unless cookies.empty?
150
+ res['set-cookie'] = cookies.collect { |cookie| cookie.to_s }
151
+ end
152
+ if conn_data.is_nocontent
153
+ res.status = WEBrick::HTTPStatus::RC_ACCEPTED
154
+ res.body = ''
155
+ return
156
+ end
157
+ if conn_data.is_fault
158
+ res.status = WEBrick::HTTPStatus::RC_INTERNAL_SERVER_ERROR
159
+ end
160
+ if outstring = encode_gzip(req, conn_data.send_string)
161
+ res['content-encoding'] = 'gzip'
162
+ res['content-length'] = outstring.size
163
+ res.body = outstring
164
+ else
165
+ res.body = conn_data.send_string
166
+ end
167
+ end
168
+
169
+ def parse_soapaction(soapaction)
170
+ if !soapaction.nil? and !soapaction.empty?
171
+ if /^"(.+)"$/ =~ soapaction
172
+ return $1
173
+ end
174
+ end
175
+ nil
176
+ end
177
+
178
+ def encode_gzip(req, outstring)
179
+ unless encode_gzip?(req)
180
+ return nil
181
+ end
182
+ begin
183
+ ostream = StringIO.new
184
+ gz = Zlib::GzipWriter.new(ostream)
185
+ gz.write(outstring)
186
+ ostream.string
187
+ ensure
188
+ gz.close
189
+ end
190
+ end
191
+
192
+ def encode_gzip?(req)
193
+ @options[:allow_content_encoding_gzip] and defined?(::Zlib) and
194
+ req['accept-encoding'] and
195
+ req['accept-encoding'].split(/,\s*/).include?('gzip')
196
+ end
197
+ end
198
+
199
+
200
+ end
201
+ end
@@ -0,0 +1,44 @@
1
+ # encoding: ASCII-8BIT
2
+ # SOAP4R - WEBrick Server
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'soap/rpc/httpserver'
11
+
12
+
13
+ module SOAP
14
+ module RPC
15
+
16
+
17
+ class StandaloneServer < HTTPServer
18
+ def initialize(appname, default_namespace, host = "0.0.0.0", port = 8080)
19
+ @appname = appname
20
+ @default_namespace = default_namespace
21
+ @host = host
22
+ @port = port
23
+ super(create_config)
24
+ end
25
+
26
+ alias add_servant add_rpc_servant
27
+ alias add_headerhandler add_rpc_headerhandler
28
+
29
+ private
30
+
31
+ def create_config
32
+ {
33
+ :BindAddress => @host,
34
+ :Port => @port,
35
+ :AccessLog => [],
36
+ :SOAPDefaultNamespace => @default_namespace,
37
+ :SOAPHTTPServerApplicationName => @appname,
38
+ }
39
+ end
40
+ end
41
+
42
+
43
+ end
44
+ end
data/lib/soap/soap.rb ADDED
@@ -0,0 +1,154 @@
1
+ # encoding: ASCII-8BIT
2
+ # soap/soap.rb: SOAP4R - Base definitions.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'xsd/qname'
11
+ require 'xsd/charset'
12
+ require 'soap/nestedexception'
13
+ require 'soap/version'
14
+
15
+
16
+ module SOAP
17
+
18
+
19
+ # VERSION = Version = SOAP::VERSION::STRING # '1.5.8-HEAD'
20
+ Version = SOAP::VERSION::STRING # '1.5.8-HEAD'
21
+ PropertyName = 'soap/property'
22
+
23
+ EnvelopeNamespace = 'http://schemas.xmlsoap.org/soap/envelope/'
24
+ EncodingNamespace = 'http://schemas.xmlsoap.org/soap/encoding/'
25
+ LiteralNamespace = 'http://xml.apache.org/xml-soap/literalxml'
26
+
27
+ NextActor = 'http://schemas.xmlsoap.org/soap/actor/next'
28
+
29
+ EleEnvelope = 'Envelope'
30
+ EleHeader = 'Header'
31
+ EleBody = 'Body'
32
+ EleFault = 'Fault'
33
+ EleFaultString = 'faultstring'
34
+ EleFaultActor = 'faultactor'
35
+ EleFaultCode = 'faultcode'
36
+ EleFaultDetail = 'detail'
37
+
38
+ AttrMustUnderstand = 'mustUnderstand'
39
+ AttrEncodingStyle = 'encodingStyle'
40
+ AttrActor = 'actor'
41
+ AttrRoot = 'root'
42
+ AttrArrayType = 'arrayType'
43
+ AttrOffset = 'offset'
44
+ AttrPosition = 'position'
45
+ AttrHref = 'href'
46
+ AttrId = 'id'
47
+ ValueArray = 'Array'
48
+
49
+ EleEnvelopeName = XSD::QName.new(EnvelopeNamespace, EleEnvelope).freeze
50
+ EleHeaderName = XSD::QName.new(EnvelopeNamespace, EleHeader).freeze
51
+ EleBodyName = XSD::QName.new(EnvelopeNamespace, EleBody).freeze
52
+ EleFaultName = XSD::QName.new(EnvelopeNamespace, EleFault).freeze
53
+ EleFaultStringName = XSD::QName.new(nil, EleFaultString).freeze
54
+ EleFaultActorName = XSD::QName.new(nil, EleFaultActor).freeze
55
+ EleFaultCodeName = XSD::QName.new(nil, EleFaultCode).freeze
56
+ EleFaultDetailName = XSD::QName.new(nil, EleFaultDetail).freeze
57
+ AttrActorName = XSD::QName.new(EnvelopeNamespace, AttrActor).freeze
58
+ AttrMustUnderstandName = XSD::QName.new(EnvelopeNamespace, AttrMustUnderstand).freeze
59
+ AttrEncodingStyleName = XSD::QName.new(EnvelopeNamespace, AttrEncodingStyle).freeze
60
+ AttrRootName = XSD::QName.new(EncodingNamespace, AttrRoot).freeze
61
+ AttrArrayTypeName = XSD::QName.new(EncodingNamespace, AttrArrayType).freeze
62
+ AttrOffsetName = XSD::QName.new(EncodingNamespace, AttrOffset).freeze
63
+ AttrPositionName = XSD::QName.new(EncodingNamespace, AttrPosition).freeze
64
+ AttrHrefName = XSD::QName.new(nil, AttrHref).freeze
65
+ AttrIdName = XSD::QName.new(nil, AttrId).freeze
66
+ ValueArrayName = XSD::QName.new(EncodingNamespace, ValueArray).freeze
67
+
68
+ Base64Literal = 'base64'
69
+
70
+ MediaType = 'text/xml'
71
+
72
+ class Error < StandardError; include NestedException; end
73
+
74
+ class StreamError < Error; end
75
+ class HTTPStreamError < StreamError; end
76
+ class PostUnavailableError < HTTPStreamError; end
77
+ class MPostUnavailableError < HTTPStreamError; end
78
+
79
+ class ArrayIndexOutOfBoundsError < Error; end
80
+ class ArrayStoreError < Error; end
81
+
82
+ class RPCRoutingError < Error; end
83
+ class EmptyResponseError < Error; end
84
+ class ResponseFormatError < Error; end
85
+
86
+ class UnhandledMustUnderstandHeaderError < Error; end
87
+
88
+
89
+ module FaultCode
90
+ VersionMismatch = XSD::QName.new(EnvelopeNamespace, 'VersionMismatch').freeze
91
+ MustUnderstand = XSD::QName.new(EnvelopeNamespace, 'MustUnderstand').freeze
92
+ Client = XSD::QName.new(EnvelopeNamespace, 'Client').freeze
93
+ Server = XSD::QName.new(EnvelopeNamespace, 'Server').freeze
94
+ end
95
+
96
+
97
+ class FaultError < Error
98
+ attr_reader :faultcode
99
+ attr_reader :faultstring
100
+ attr_reader :faultactor
101
+ attr_accessor :detail
102
+
103
+ def initialize(fault)
104
+ @faultcode = fault.faultcode
105
+ @faultstring = fault.faultstring
106
+ @faultactor = fault.faultactor
107
+ @detail = fault.detail
108
+ super(self.to_s)
109
+ end
110
+
111
+ def to_s
112
+ str = nil
113
+ if @faultstring and @faultstring.respond_to?('data')
114
+ str = @faultstring.data
115
+ end
116
+ str || '(No faultstring)'
117
+ end
118
+ end
119
+
120
+
121
+ module Env
122
+ def self.getenv(name)
123
+ ENV[name.downcase] || ENV[name.upcase]
124
+ end
125
+
126
+ is_cgi = !getenv('request_method').nil?
127
+ HTTP_PROXY = is_cgi ? getenv('cgi_http_proxy') : getenv('http_proxy')
128
+ NO_PROXY = getenv('no_proxy')
129
+ end
130
+
131
+
132
+ end
133
+
134
+
135
+ unless Object.respond_to?(:instance_variable_get)
136
+ class Object
137
+ def instance_variable_get(ivarname)
138
+ instance_eval(ivarname)
139
+ end
140
+
141
+ def instance_variable_set(ivarname, value)
142
+ instance_eval("#{ivarname} = value")
143
+ end
144
+ end
145
+ end
146
+
147
+
148
+ unless Kernel.respond_to?(:warn)
149
+ module Kernel
150
+ def warn(msg)
151
+ STDERR.puts(msg + "\n") unless $VERBOSE.nil?
152
+ end
153
+ end
154
+ end
@@ -0,0 +1,306 @@
1
+ # encoding: ASCII-8BIT
2
+ # SOAP4R - Stream handler.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'soap/soap'
11
+ require 'soap/httpconfigloader'
12
+ require 'soap/filter/filterchain'
13
+ begin
14
+ require 'stringio'
15
+ require 'zlib'
16
+ rescue LoadError
17
+ warn("Loading stringio or zlib failed. No gzipped response support.") if $DEBUG
18
+ end
19
+
20
+
21
+ module SOAP
22
+
23
+
24
+ class StreamHandler
25
+ RUBY_VERSION_STRING = "ruby #{ RUBY_VERSION } (#{ RUBY_RELEASE_DATE }) [#{ RUBY_PLATFORM }]"
26
+
27
+ attr_reader :filterchain
28
+
29
+ class ConnectionData
30
+ attr_accessor :send_string
31
+ attr_accessor :send_contenttype
32
+ attr_accessor :receive_string
33
+ attr_accessor :receive_contenttype
34
+ attr_accessor :is_fault
35
+ attr_accessor :is_nocontent
36
+ attr_accessor :soapaction
37
+
38
+ def initialize(send_string = nil)
39
+ @send_string = send_string
40
+ @send_contenttype = nil
41
+ @receive_string = nil
42
+ @receive_contenttype = nil
43
+ @is_fault = false
44
+ @is_nocontent = false
45
+ @soapaction = nil
46
+ end
47
+ end
48
+
49
+ def initialize
50
+ @filterchain = Filter::FilterChain.new
51
+ end
52
+
53
+ def self.parse_media_type(str)
54
+ if /^#{ MediaType }(?:\s*;\s*charset=([^"]+|"[^"]+"))?$/i !~ str
55
+ return nil
56
+ end
57
+ charset = $1
58
+ charset.gsub!(/"/, '') if charset
59
+ charset || 'us-ascii'
60
+ end
61
+
62
+ def self.create_media_type(charset)
63
+ "#{ MediaType }; charset=#{ charset }"
64
+ end
65
+
66
+ def send(url, conn_data, soapaction = nil, charset = nil)
67
+ # send a ConnectionData to specified url.
68
+ # return value is a ConnectionData with receive_* property filled.
69
+ # You can fill values of given conn_data and return it.
70
+ end
71
+
72
+ def reset(url = nil)
73
+ # for initializing connection status if needed.
74
+ # return value is not expected.
75
+ end
76
+
77
+ def set_wiredump_file_base(wiredump_file_base)
78
+ # for logging. return value is not expected.
79
+ # Override it when you want.
80
+ raise NotImplementedError
81
+ end
82
+
83
+ def test_loopback_response
84
+ # for loopback testing. see HTTPStreamHandler for more detail.
85
+ # return value is an Array of loopback responses.
86
+ # Override it when you want.
87
+ raise NotImplementedError
88
+ end
89
+ end
90
+
91
+
92
+ class HTTPStreamHandler < StreamHandler
93
+ include SOAP
94
+
95
+ begin
96
+ require 'httpclient'
97
+ Client = HTTPClient
98
+ RETRYABLE = true
99
+ rescue LoadError
100
+ begin
101
+ require 'http-access2'
102
+ if HTTPAccess2::VERSION < "2.0"
103
+ raise LoadError.new("http-access/2.0 or later is required.")
104
+ end
105
+ Client = HTTPAccess2::Client
106
+ RETRYABLE = true
107
+ rescue LoadError
108
+ warn("Loading http-access2 failed. Net/http is used.") if $DEBUG
109
+ require 'soap/netHttpClient'
110
+ Client = SOAP::NetHttpClient
111
+ RETRYABLE = false
112
+ end
113
+ end
114
+
115
+ class HttpPostRequestFilter
116
+ def initialize(filterchain)
117
+ @filterchain = filterchain
118
+ end
119
+
120
+ def filter_request(req)
121
+ @filterchain.each do |filter|
122
+ filter.on_http_outbound(req)
123
+ end
124
+ end
125
+
126
+ def filter_response(req, res)
127
+ @filterchain.each do |filter|
128
+ filter.on_http_inbound(req, res)
129
+ end
130
+ end
131
+ end
132
+
133
+ public
134
+
135
+ attr_reader :client
136
+ attr_accessor :wiredump_file_base
137
+
138
+ MAX_RETRY_COUNT = 10 # [times]
139
+
140
+ def self.create(options)
141
+ new(options)
142
+ end
143
+
144
+ def initialize(options)
145
+ super()
146
+ if Client == HTTPClient && SHARED_HTTPCLIENT
147
+ @client = SHARED_HTTPCLIENT
148
+ else
149
+ @client = Client.new(nil, "RUBYJEDI-SOAP4R/#{ Version }")
150
+ end
151
+ if @client.respond_to?(:request_filter)
152
+ @client.request_filter << HttpPostRequestFilter.new(@filterchain)
153
+ end
154
+ @wiredump_file_base = nil
155
+ @charset = @wiredump_dev = nil
156
+ @options = options
157
+ set_options
158
+ @client.debug_dev = @wiredump_dev
159
+ @cookie_store = nil
160
+ @accept_encoding_gzip = false
161
+ end
162
+
163
+ def test_loopback_response
164
+ @client.test_loopback_response
165
+ end
166
+
167
+ def accept_encoding_gzip=(allow)
168
+ @accept_encoding_gzip = allow
169
+ end
170
+
171
+ def inspect
172
+ "#<#{self.class}>"
173
+ end
174
+
175
+ def send(url, conn_data, charset = @charset)
176
+ conn_data = send_post(url, conn_data, charset)
177
+ @client.save_cookie_store if @cookie_store
178
+ conn_data
179
+ end
180
+
181
+ def reset(url = nil)
182
+ if url.nil?
183
+ @client.reset_all
184
+ else
185
+ @client.reset(url)
186
+ end
187
+ @client.save_cookie_store if @cookie_store
188
+ end
189
+
190
+ private
191
+
192
+ def set_options
193
+ @options["http"] ||= ::SOAP::Property.new
194
+ HTTPConfigLoader.set_options(@client, @options["http"])
195
+ @charset = @options["http.charset"] || XSD::Charset.xml_encoding_label
196
+ @options.add_hook("http.charset") do |key, value|
197
+ @charset = value
198
+ end
199
+ @wiredump_dev = @options["http.wiredump_dev"]
200
+ @options.add_hook("http.wiredump_dev") do |key, value|
201
+ @wiredump_dev = value
202
+ @client.debug_dev = @wiredump_dev
203
+ end
204
+ set_cookie_store_file(@options["http.cookie_store_file"])
205
+ @options.add_hook("http.cookie_store_file") do |key, value|
206
+ set_cookie_store_file(value)
207
+ end
208
+ ssl_config = @options["http.ssl_config"]
209
+ basic_auth = @options["http.basic_auth"]
210
+ auth = @options["http.auth"]
211
+ @options["http"].lock(true)
212
+ ssl_config.unlock
213
+ basic_auth.unlock
214
+ auth.unlock
215
+ end
216
+
217
+ def set_cookie_store_file(value)
218
+ value = nil if value and value.empty?
219
+ @cookie_store = value
220
+ @client.set_cookie_store(@cookie_store) if @cookie_store
221
+ end
222
+
223
+ def send_post(url, conn_data, charset)
224
+ conn_data.send_contenttype ||= StreamHandler.create_media_type(charset)
225
+
226
+ if @wiredump_file_base
227
+ filename = @wiredump_file_base + '_request.xml'
228
+ f = File.open(filename, "w")
229
+ f << conn_data.send_string
230
+ f.close
231
+ end
232
+
233
+ extheader = {}
234
+ extheader['Content-Type'] = conn_data.send_contenttype
235
+ extheader['SOAPAction'] = "\"#{ conn_data.soapaction }\""
236
+ extheader['Accept-Encoding'] = 'gzip' if send_accept_encoding_gzip?
237
+ send_string = conn_data.send_string
238
+ @wiredump_dev << "Wire dump:\n\n" if @wiredump_dev
239
+ begin
240
+ retry_count = 0
241
+ while true
242
+ res = @client.post(url, send_string, extheader)
243
+ if RETRYABLE and HTTP::Status.redirect?(res.status)
244
+ retry_count += 1
245
+ if retry_count >= MAX_RETRY_COUNT
246
+ raise HTTPStreamError.new("redirect count exceeded")
247
+ end
248
+ url = res.header["location"][0]
249
+ puts "redirected to #{url}" if $DEBUG
250
+ else
251
+ break
252
+ end
253
+ end
254
+ rescue
255
+ @client.reset(url)
256
+ raise
257
+ end
258
+ @wiredump_dev << "\n\n" if @wiredump_dev
259
+ receive_string = res.content
260
+ if @wiredump_file_base
261
+ filename = @wiredump_file_base + '_response.xml'
262
+ f = File.open(filename, "w")
263
+ f << receive_string
264
+ f.close
265
+ end
266
+ case res.status
267
+ when 405
268
+ raise PostUnavailableError.new("#{ res.status }: #{ res.reason }")
269
+ when 200, 202, 500
270
+ # Nothing to do. 202 is for oneway service.
271
+ else
272
+ raise HTTPStreamError.new("#{ res.status }: #{ res.reason }")
273
+ end
274
+
275
+ # decode gzipped content, if we know it's there from the headers
276
+ if res.respond_to?(:header) and !res.header['content-encoding'].empty? and
277
+ res.header['content-encoding'][0].downcase == 'gzip'
278
+ receive_string = decode_gzip(receive_string)
279
+ # otherwise check for the gzip header
280
+ elsif @accept_encoding_gzip && receive_string[0..1] == "\x1f\x8b"
281
+ receive_string = decode_gzip(receive_string)
282
+ end
283
+ conn_data.receive_string = receive_string
284
+ conn_data.receive_contenttype = res.contenttype
285
+ conn_data
286
+ end
287
+
288
+ def send_accept_encoding_gzip?
289
+ @accept_encoding_gzip and defined?(::Zlib)
290
+ end
291
+
292
+ def decode_gzip(instring)
293
+ unless send_accept_encoding_gzip?
294
+ raise HTTPStreamError.new("Gzipped response content.")
295
+ end
296
+ begin
297
+ gz = Zlib::GzipReader.new(StringIO.new(instring))
298
+ gz.read
299
+ ensure
300
+ gz.close
301
+ end
302
+ end
303
+ end
304
+
305
+
306
+ end
@@ -0,0 +1,9 @@
1
+ # encoding: ASCII-8BIT
2
+ module SOAP
3
+ module VERSION #:nodoc:
4
+ MAJOR = 1
5
+ MINOR = 6
6
+ TINY = 0
7
+ STRING = [MAJOR, MINOR, TINY].join('.')
8
+ end
9
+ end