DefV-soap4r 1.5.8.2

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 (443) hide show
  1. data/bin/wsdl2ruby.rb +137 -0
  2. data/bin/xsd2ruby.rb +90 -0
  3. data/lib/soap/attachment.rb +108 -0
  4. data/lib/soap/attrproxy.rb +34 -0
  5. data/lib/soap/baseData.rb +1094 -0
  6. data/lib/soap/element.rb +277 -0
  7. data/lib/soap/encodingstyle/aspDotNetHandler.rb +207 -0
  8. data/lib/soap/encodingstyle/handler.rb +120 -0
  9. data/lib/soap/encodingstyle/literalHandler.rb +195 -0
  10. data/lib/soap/encodingstyle/soapHandler.rb +559 -0
  11. data/lib/soap/filter.rb +13 -0
  12. data/lib/soap/filter/filterchain.rb +51 -0
  13. data/lib/soap/filter/handler.rb +31 -0
  14. data/lib/soap/filter/streamhandler.rb +29 -0
  15. data/lib/soap/generator.rb +299 -0
  16. data/lib/soap/header/handler.rb +61 -0
  17. data/lib/soap/header/handlerset.rb +70 -0
  18. data/lib/soap/header/mappinghandler.rb +47 -0
  19. data/lib/soap/header/simplehandler.rb +44 -0
  20. data/lib/soap/httpconfigloader.rb +139 -0
  21. data/lib/soap/mapping.rb +12 -0
  22. data/lib/soap/mapping/encodedregistry.rb +537 -0
  23. data/lib/soap/mapping/factory.rb +388 -0
  24. data/lib/soap/mapping/literalregistry.rb +391 -0
  25. data/lib/soap/mapping/mapping.rb +577 -0
  26. data/lib/soap/mapping/registry.rb +295 -0
  27. data/lib/soap/mapping/rubytypeFactory.rb +446 -0
  28. data/lib/soap/mapping/schemadefinition.rb +170 -0
  29. data/lib/soap/mapping/typeMap.rb +106 -0
  30. data/lib/soap/mapping/wsdlencodedregistry.rb +211 -0
  31. data/lib/soap/mapping/wsdlliteralregistry.rb +248 -0
  32. data/lib/soap/marshal.rb +59 -0
  33. data/lib/soap/mimemessage.rb +241 -0
  34. data/lib/soap/nestedexception.rb +42 -0
  35. data/lib/soap/netHttpClient.rb +241 -0
  36. data/lib/soap/ns.rb +34 -0
  37. data/lib/soap/parser.rb +252 -0
  38. data/lib/soap/processor.rb +66 -0
  39. data/lib/soap/property.rb +333 -0
  40. data/lib/soap/proxy.rb +14 -0
  41. data/lib/soap/rpc/cgistub.rb +247 -0
  42. data/lib/soap/rpc/driver.rb +221 -0
  43. data/lib/soap/rpc/element.rb +374 -0
  44. data/lib/soap/rpc/element.rb.orig +374 -0
  45. data/lib/soap/rpc/httpserver.rb +142 -0
  46. data/lib/soap/rpc/methodDef.rb +68 -0
  47. data/lib/soap/rpc/proxy.rb +572 -0
  48. data/lib/soap/rpc/router.rb +662 -0
  49. data/lib/soap/rpc/rpc.rb +25 -0
  50. data/lib/soap/rpc/soaplet.rb +200 -0
  51. data/lib/soap/rpc/standaloneServer.rb +43 -0
  52. data/lib/soap/soap.rb +151 -0
  53. data/lib/soap/streamHandler.rb +301 -0
  54. data/lib/soap/wsdlDriver.rb +164 -0
  55. data/lib/wsdl/binding.rb +65 -0
  56. data/lib/wsdl/data.rb +64 -0
  57. data/lib/wsdl/definitions.rb +236 -0
  58. data/lib/wsdl/documentation.rb +32 -0
  59. data/lib/wsdl/import.rb +80 -0
  60. data/lib/wsdl/importer.rb +38 -0
  61. data/lib/wsdl/info.rb +50 -0
  62. data/lib/wsdl/message.rb +54 -0
  63. data/lib/wsdl/operation.rb +151 -0
  64. data/lib/wsdl/operationBinding.rb +240 -0
  65. data/lib/wsdl/param.rb +93 -0
  66. data/lib/wsdl/parser.rb +164 -0
  67. data/lib/wsdl/part.rb +52 -0
  68. data/lib/wsdl/port.rb +66 -0
  69. data/lib/wsdl/portType.rb +75 -0
  70. data/lib/wsdl/service.rb +61 -0
  71. data/lib/wsdl/soap/address.rb +40 -0
  72. data/lib/wsdl/soap/binding.rb +49 -0
  73. data/lib/wsdl/soap/body.rb +58 -0
  74. data/lib/wsdl/soap/cgiStubCreator.rb +92 -0
  75. data/lib/wsdl/soap/classDefCreator.rb +433 -0
  76. data/lib/wsdl/soap/classDefCreatorSupport.rb +240 -0
  77. data/lib/wsdl/soap/classNameCreator.rb +54 -0
  78. data/lib/wsdl/soap/clientSkeltonCreator.rb +104 -0
  79. data/lib/wsdl/soap/complexType.rb +173 -0
  80. data/lib/wsdl/soap/data.rb +42 -0
  81. data/lib/wsdl/soap/definitions.rb +200 -0
  82. data/lib/wsdl/soap/driverCreator.rb +118 -0
  83. data/lib/wsdl/soap/element.rb +33 -0
  84. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +73 -0
  85. data/lib/wsdl/soap/fault.rb +56 -0
  86. data/lib/wsdl/soap/header.rb +86 -0
  87. data/lib/wsdl/soap/headerfault.rb +56 -0
  88. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +115 -0
  89. data/lib/wsdl/soap/mappingRegistryCreator.rb +58 -0
  90. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +376 -0
  91. data/lib/wsdl/soap/methodDefCreator.rb +199 -0
  92. data/lib/wsdl/soap/operation.rb +112 -0
  93. data/lib/wsdl/soap/servantSkeltonCreator.rb +89 -0
  94. data/lib/wsdl/soap/servletStubCreator.rb +104 -0
  95. data/lib/wsdl/soap/standaloneServerStubCreator.rb +100 -0
  96. data/lib/wsdl/soap/wsdl2ruby.rb +217 -0
  97. data/lib/wsdl/types.rb +44 -0
  98. data/lib/wsdl/wsdl.rb +24 -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 +61 -0
  102. data/lib/wsdl/xmlSchema/anyAttribute.rb +48 -0
  103. data/lib/wsdl/xmlSchema/attribute.rb +104 -0
  104. data/lib/wsdl/xmlSchema/attributeGroup.rb +68 -0
  105. data/lib/wsdl/xmlSchema/choice.rb +58 -0
  106. data/lib/wsdl/xmlSchema/complexContent.rb +97 -0
  107. data/lib/wsdl/xmlSchema/complexExtension.rb +119 -0
  108. data/lib/wsdl/xmlSchema/complexRestriction.rb +104 -0
  109. data/lib/wsdl/xmlSchema/complexType.rb +193 -0
  110. data/lib/wsdl/xmlSchema/content.rb +95 -0
  111. data/lib/wsdl/xmlSchema/data.rb +116 -0
  112. data/lib/wsdl/xmlSchema/element.rb +153 -0
  113. data/lib/wsdl/xmlSchema/enumeration.rb +36 -0
  114. data/lib/wsdl/xmlSchema/fractiondigits.rb +37 -0
  115. data/lib/wsdl/xmlSchema/group.rb +100 -0
  116. data/lib/wsdl/xmlSchema/import.rb +53 -0
  117. data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
  118. data/lib/wsdl/xmlSchema/importer.rb +102 -0
  119. data/lib/wsdl/xmlSchema/include.rb +48 -0
  120. data/lib/wsdl/xmlSchema/length.rb +37 -0
  121. data/lib/wsdl/xmlSchema/list.rb +48 -0
  122. data/lib/wsdl/xmlSchema/maxexclusive.rb +37 -0
  123. data/lib/wsdl/xmlSchema/maxinclusive.rb +37 -0
  124. data/lib/wsdl/xmlSchema/maxlength.rb +37 -0
  125. data/lib/wsdl/xmlSchema/minexclusive.rb +37 -0
  126. data/lib/wsdl/xmlSchema/mininclusive.rb +37 -0
  127. data/lib/wsdl/xmlSchema/minlength.rb +37 -0
  128. data/lib/wsdl/xmlSchema/parser.rb +167 -0
  129. data/lib/wsdl/xmlSchema/pattern.rb +36 -0
  130. data/lib/wsdl/xmlSchema/ref.rb +33 -0
  131. data/lib/wsdl/xmlSchema/schema.rb +178 -0
  132. data/lib/wsdl/xmlSchema/sequence.rb +54 -0
  133. data/lib/wsdl/xmlSchema/simpleContent.rb +69 -0
  134. data/lib/wsdl/xmlSchema/simpleExtension.rb +62 -0
  135. data/lib/wsdl/xmlSchema/simpleRestriction.rb +132 -0
  136. data/lib/wsdl/xmlSchema/simpleType.rb +87 -0
  137. data/lib/wsdl/xmlSchema/totaldigits.rb +37 -0
  138. data/lib/wsdl/xmlSchema/union.rb +35 -0
  139. data/lib/wsdl/xmlSchema/unique.rb +34 -0
  140. data/lib/wsdl/xmlSchema/whitespace.rb +37 -0
  141. data/lib/wsdl/xmlSchema/xsd2ruby.rb +174 -0
  142. data/lib/xsd/charset.rb +188 -0
  143. data/lib/xsd/codegen.rb +12 -0
  144. data/lib/xsd/codegen/classdef.rb +208 -0
  145. data/lib/xsd/codegen/commentdef.rb +34 -0
  146. data/lib/xsd/codegen/gensupport.rb +273 -0
  147. data/lib/xsd/codegen/methoddef.rb +70 -0
  148. data/lib/xsd/codegen/moduledef.rb +208 -0
  149. data/lib/xsd/datatypes.rb +1466 -0
  150. data/lib/xsd/datatypes1999.rb +20 -0
  151. data/lib/xsd/iconvcharset.rb +33 -0
  152. data/lib/xsd/mapping.rb +68 -0
  153. data/lib/xsd/namedelements.rb +132 -0
  154. data/lib/xsd/ns.rb +182 -0
  155. data/lib/xsd/qname.rb +79 -0
  156. data/lib/xsd/xmlparser.rb +76 -0
  157. data/lib/xsd/xmlparser.rb.orig +76 -0
  158. data/lib/xsd/xmlparser/libxmlparser.rb +119 -0
  159. data/lib/xsd/xmlparser/parser.rb +100 -0
  160. data/lib/xsd/xmlparser/rexmlparser.rb +58 -0
  161. data/lib/xsd/xmlparser/xmlparser.rb +50 -0
  162. data/lib/xsd/xmlparser/xmlscanner.rb +149 -0
  163. data/test/16runner.rb +68 -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 +288 -0
  168. data/test/interopR2/client.NetRemoting.rb +17 -0
  169. data/test/interopR2/client.rb +1234 -0
  170. data/test/interopR2/client4S4C.rb +15 -0
  171. data/test/interopR2/client4S4C2.rb +14 -0
  172. data/test/interopR2/clientASP.NET.rb +17 -0
  173. data/test/interopR2/clientApacheAxis.rb +16 -0
  174. data/test/interopR2/clientApacheSOAP.rb +17 -0
  175. data/test/interopR2/clientBEAWebLogic.rb +17 -0
  176. data/test/interopR2/clientBase.rb +1967 -0
  177. data/test/interopR2/clientCapeConnect.rb +18 -0
  178. data/test/interopR2/clientDelphi.rb +19 -0
  179. data/test/interopR2/clientEasySoap.rb +14 -0
  180. data/test/interopR2/clientFrontier.rb +25 -0
  181. data/test/interopR2/clientGLUE.rb +32 -0
  182. data/test/interopR2/clientHP.rb +13 -0
  183. data/test/interopR2/clientJAX-RPC.rb +19 -0
  184. data/test/interopR2/clientJSOAP.rb +14 -0
  185. data/test/interopR2/clientKafkaXSLT.rb +15 -0
  186. data/test/interopR2/clientMSSOAPToolkit2.0.rb +17 -0
  187. data/test/interopR2/clientMSSOAPToolkit3.0.rb +17 -0
  188. data/test/interopR2/clientNuSOAP.rb +19 -0
  189. data/test/interopR2/clientNuWave.rb +15 -0
  190. data/test/interopR2/clientOpenLink.rb +15 -0
  191. data/test/interopR2/clientOracle.rb +15 -0
  192. data/test/interopR2/clientPEAR.rb +18 -0
  193. data/test/interopR2/clientPhalanx.rb +18 -0
  194. data/test/interopR2/clientSIMACE.rb +18 -0
  195. data/test/interopR2/clientSOAP4R.rb +18 -0
  196. data/test/interopR2/clientSOAP__Lite.rb +14 -0
  197. data/test/interopR2/clientSQLData.rb +18 -0
  198. data/test/interopR2/clientSilverStream.rb +17 -0
  199. data/test/interopR2/clientSpray2001.rb +17 -0
  200. data/test/interopR2/clientSun.rb +19 -0
  201. data/test/interopR2/clientVWOpentalkSoap.rb +19 -0
  202. data/test/interopR2/clientWASP.rb +19 -0
  203. data/test/interopR2/clientWASPC.rb +18 -0
  204. data/test/interopR2/clientWebMethods.rb +15 -0
  205. data/test/interopR2/clientWhiteMesa.rb +28 -0
  206. data/test/interopR2/clientWingfoot.rb +15 -0
  207. data/test/interopR2/clientXMLBus.rb +19 -0
  208. data/test/interopR2/clientXMLRPC-EPI.rb +17 -0
  209. data/test/interopR2/clientXSOAP.rb +14 -0
  210. data/test/interopR2/clientZSI.rb +19 -0
  211. data/test/interopR2/clienteSOAP.rb +18 -0
  212. data/test/interopR2/clientgSOAP.rb +18 -0
  213. data/test/interopR2/clientkSOAP.rb +17 -0
  214. data/test/interopR2/iSimonReg.rb +112 -0
  215. data/test/interopR2/interopResultBase.rb +114 -0
  216. data/test/interopR2/interopService.rb +247 -0
  217. data/test/interopR2/rwikiInteropService.rb +105 -0
  218. data/test/interopR2/server.cgi +270 -0
  219. data/test/interopR2/server.rb +275 -0
  220. data/test/interopR2/simonReg.rb +123 -0
  221. data/test/interopR2/test.sh +49 -0
  222. data/test/interopR4/client.rb +112 -0
  223. data/test/results +4810 -0
  224. data/test/runner.rb +7 -0
  225. data/test/sm11/classDef.rb +156 -0
  226. data/test/sm11/client.rb +542 -0
  227. data/test/sm11/driver.rb +183 -0
  228. data/test/sm11/servant.rb +1067 -0
  229. data/test/sm11/server.rb +25 -0
  230. data/test/soap/asp.net/hello.wsdl +96 -0
  231. data/test/soap/asp.net/test_aspdotnet.rb +123 -0
  232. data/test/soap/auth/htdigest +2 -0
  233. data/test/soap/auth/htpasswd +2 -0
  234. data/test/soap/auth/test_basic.rb +117 -0
  235. data/test/soap/auth/test_digest.rb +118 -0
  236. data/test/soap/calc/calc.rb +17 -0
  237. data/test/soap/calc/calc2.rb +29 -0
  238. data/test/soap/calc/server.cgi +13 -0
  239. data/test/soap/calc/server.rb +17 -0
  240. data/test/soap/calc/server2.rb +20 -0
  241. data/test/soap/calc/test_calc.rb +51 -0
  242. data/test/soap/calc/test_calc2.rb +55 -0
  243. data/test/soap/calc/test_calc_cgi.rb +71 -0
  244. data/test/soap/case/test_mapping.rb +57 -0
  245. data/test/soap/fault/test_customfault.rb +60 -0
  246. data/test/soap/fault/test_fault.rb +46 -0
  247. data/test/soap/fault/test_soaparray.rb +35 -0
  248. data/test/soap/filter/test_filter.rb +146 -0
  249. data/test/soap/header/server.cgi +119 -0
  250. data/test/soap/header/session.pstoredb +0 -0
  251. data/test/soap/header/test_authheader.rb +240 -0
  252. data/test/soap/header/test_authheader_cgi.rb +121 -0
  253. data/test/soap/header/test_simplehandler.rb +116 -0
  254. data/test/soap/helloworld/hw_s.rb +16 -0
  255. data/test/soap/helloworld/test_helloworld.rb +43 -0
  256. data/test/soap/htpasswd +2 -0
  257. data/test/soap/literalArrayMapping/amazonEc.rb +4778 -0
  258. data/test/soap/literalArrayMapping/amazonEcDriver.rb +172 -0
  259. data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
  260. data/test/soap/literalArrayMapping/test_definedarray.rb +34 -0
  261. data/test/soap/marshal/marshaltestlib.rb +494 -0
  262. data/test/soap/marshal/test_digraph.rb +56 -0
  263. data/test/soap/marshal/test_marshal.rb +26 -0
  264. data/test/soap/marshal/test_struct.rb +47 -0
  265. data/test/soap/ssl/README +1 -0
  266. data/test/soap/ssl/ca.cert +23 -0
  267. data/test/soap/ssl/client.cert +19 -0
  268. data/test/soap/ssl/client.key +15 -0
  269. data/test/soap/ssl/server.cert +19 -0
  270. data/test/soap/ssl/server.key +15 -0
  271. data/test/soap/ssl/sslsvr.rb +57 -0
  272. data/test/soap/ssl/subca.cert +21 -0
  273. data/test/soap/ssl/test_ssl.rb +235 -0
  274. data/test/soap/struct/test_struct.rb +70 -0
  275. data/test/soap/styleuse/client.rb +20 -0
  276. data/test/soap/styleuse/server.rb +86 -0
  277. data/test/soap/swa/test_file.rb +75 -0
  278. data/test/soap/test_basetype.rb +1090 -0
  279. data/test/soap/test_cookie.rb +112 -0
  280. data/test/soap/test_custom_ns.rb +105 -0
  281. data/test/soap/test_custommap.rb +110 -0
  282. data/test/soap/test_empty.rb +105 -0
  283. data/test/soap/test_envelopenamespace.rb +85 -0
  284. data/test/soap/test_extraattr.rb +54 -0
  285. data/test/soap/test_generator.rb +27 -0
  286. data/test/soap/test_httpconfigloader.rb +71 -0
  287. data/test/soap/test_mapping.rb +131 -0
  288. data/test/soap/test_nestedexception.rb +56 -0
  289. data/test/soap/test_nil.rb +57 -0
  290. data/test/soap/test_no_indent.rb +88 -0
  291. data/test/soap/test_property.rb +428 -0
  292. data/test/soap/test_response_as_xml.rb +117 -0
  293. data/test/soap/test_soapelement.rb +138 -0
  294. data/test/soap/test_streamhandler.rb +270 -0
  295. data/test/soap/test_styleuse.rb +326 -0
  296. data/test/soap/wsdlDriver/README.txt +2 -0
  297. data/test/soap/wsdlDriver/calc.wsdl +126 -0
  298. data/test/soap/wsdlDriver/document.wsdl +54 -0
  299. data/test/soap/wsdlDriver/echo_version.rb +29 -0
  300. data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
  301. data/test/soap/wsdlDriver/test_calc.rb +71 -0
  302. data/test/soap/wsdlDriver/test_document.rb +71 -0
  303. data/test/soap/wsdlDriver/test_simpletype.rb +80 -0
  304. data/test/testutil.rb +54 -0
  305. data/test/wsdl/abstract/abstract.wsdl +176 -0
  306. data/test/wsdl/abstract/test_abstract.rb +159 -0
  307. data/test/wsdl/anonymous/expectedClassDef.rb +128 -0
  308. data/test/wsdl/anonymous/expectedDriver.rb +59 -0
  309. data/test/wsdl/anonymous/expectedMappingRegistry.rb +176 -0
  310. data/test/wsdl/anonymous/lp.wsdl +147 -0
  311. data/test/wsdl/anonymous/test_anonymous.rb +130 -0
  312. data/test/wsdl/any/any.wsdl +114 -0
  313. data/test/wsdl/any/expectedDriver.rb +68 -0
  314. data/test/wsdl/any/expectedEcho.rb +57 -0
  315. data/test/wsdl/any/expectedMappingRegistry.rb +63 -0
  316. data/test/wsdl/any/expectedService.rb +69 -0
  317. data/test/wsdl/any/test_any.rb +193 -0
  318. data/test/wsdl/axisArray/axisArray.wsdl +87 -0
  319. data/test/wsdl/axisArray/test_axisarray.rb +124 -0
  320. data/test/wsdl/choice/choice.wsdl +167 -0
  321. data/test/wsdl/choice/test_choice.rb +310 -0
  322. data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
  323. data/test/wsdl/complexcontent/test_echo.rb +90 -0
  324. data/test/wsdl/datetime/DatetimeService.rb +44 -0
  325. data/test/wsdl/datetime/datetime.rb +0 -0
  326. data/test/wsdl/datetime/datetime.wsdl +45 -0
  327. data/test/wsdl/datetime/datetimeServant.rb +22 -0
  328. data/test/wsdl/datetime/test_datetime.rb +86 -0
  329. data/test/wsdl/document/array/double.wsdl +161 -0
  330. data/test/wsdl/document/array/test_array.rb +201 -0
  331. data/test/wsdl/document/document.wsdl +76 -0
  332. data/test/wsdl/document/number.wsdl +54 -0
  333. data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
  334. data/test/wsdl/document/test_nosoapaction.rb +102 -0
  335. data/test/wsdl/document/test_number.rb +92 -0
  336. data/test/wsdl/document/test_rpc.rb +355 -0
  337. data/test/wsdl/emptycomplextype.wsdl +31 -0
  338. data/test/wsdl/fault/fault.wsdl +79 -0
  339. data/test/wsdl/fault/multifault.wsdl +96 -0
  340. data/test/wsdl/fault/test_fault.rb +119 -0
  341. data/test/wsdl/fault/test_multifault.rb +134 -0
  342. data/test/wsdl/group/expectedClassdef.rb +58 -0
  343. data/test/wsdl/group/expectedDriver.rb +51 -0
  344. data/test/wsdl/group/expectedMappingRegistry.rb +67 -0
  345. data/test/wsdl/group/group.wsdl +88 -0
  346. data/test/wsdl/group/test_rpc.rb +145 -0
  347. data/test/wsdl/list/list.wsdl +93 -0
  348. data/test/wsdl/list/test_list.rb +124 -0
  349. data/test/wsdl/map/map.wsdl +92 -0
  350. data/test/wsdl/map/map.xml +43 -0
  351. data/test/wsdl/map/test_map.rb +99 -0
  352. data/test/wsdl/marshal/Person.rb +1 -0
  353. data/test/wsdl/marshal/person.wsdl +21 -0
  354. data/test/wsdl/marshal/person_org.rb +23 -0
  355. data/test/wsdl/marshal/test_wsdlmarshal.rb +76 -0
  356. data/test/wsdl/multiplefault.wsdl +75 -0
  357. data/test/wsdl/oneway/oneway.wsdl +36 -0
  358. data/test/wsdl/oneway/test_oneway.rb +108 -0
  359. data/test/wsdl/overload/expectedClient.rb +37 -0
  360. data/test/wsdl/overload/expectedDriver.rb +61 -0
  361. data/test/wsdl/overload/expectedServant.rb +35 -0
  362. data/test/wsdl/overload/overload.wsdl +70 -0
  363. data/test/wsdl/overload/test_overload.rb +131 -0
  364. data/test/wsdl/qualified/lp.wsdl +47 -0
  365. data/test/wsdl/qualified/lp.xsd +26 -0
  366. data/test/wsdl/qualified/np.wsdl +51 -0
  367. data/test/wsdl/qualified/test_qualified.rb +137 -0
  368. data/test/wsdl/qualified/test_unqualified.rb +138 -0
  369. data/test/wsdl/raa/RAAService.rb +125 -0
  370. data/test/wsdl/raa/README.txt +8 -0
  371. data/test/wsdl/raa/expectedClassDef.rb +100 -0
  372. data/test/wsdl/raa/expectedDriver.rb +96 -0
  373. data/test/wsdl/raa/expectedMappingRegistry.rb +121 -0
  374. data/test/wsdl/raa/raa.wsdl +264 -0
  375. data/test/wsdl/raa/test_raa.rb +126 -0
  376. data/test/wsdl/ref/expectedDriver.rb +51 -0
  377. data/test/wsdl/ref/expectedProduct.rb +243 -0
  378. data/test/wsdl/ref/product.wsdl +147 -0
  379. data/test/wsdl/ref/test_ref.rb +268 -0
  380. data/test/wsdl/rpc/rpc.wsdl +109 -0
  381. data/test/wsdl/rpc/test-rpc-lit.wsdl +371 -0
  382. data/test/wsdl/rpc/test_rpc.rb +176 -0
  383. data/test/wsdl/rpc/test_rpc_lit.rb +470 -0
  384. data/test/wsdl/simplecontent/simplecontent.wsdl +84 -0
  385. data/test/wsdl/simplecontent/test_simplecontent.rb +102 -0
  386. data/test/wsdl/simpletype/rpc/echo_version.rb +1 -0
  387. data/test/wsdl/simpletype/rpc/echo_versionDriver.rb +10 -0
  388. data/test/wsdl/simpletype/rpc/echo_versionMappingRegistry.rb +4 -0
  389. data/test/wsdl/simpletype/rpc/echo_versionServant.rb +3 -0
  390. data/test/wsdl/simpletype/rpc/echo_version_service.rb +3 -0
  391. data/test/wsdl/simpletype/rpc/echo_version_serviceClient.rb +34 -0
  392. data/test/wsdl/simpletype/rpc/expectedClient.rb +34 -0
  393. data/test/wsdl/simpletype/rpc/expectedDriver.rb +58 -0
  394. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +36 -0
  395. data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +57 -0
  396. data/test/wsdl/simpletype/rpc/expectedServant.rb +32 -0
  397. data/test/wsdl/simpletype/rpc/expectedService.rb +55 -0
  398. data/test/wsdl/simpletype/rpc/rpc.wsdl +98 -0
  399. data/test/wsdl/simpletype/rpc/test_rpc.rb +52 -0
  400. data/test/wsdl/simpletype/simpletype.wsdl +114 -0
  401. data/test/wsdl/simpletype/test_simpletype.rb +92 -0
  402. data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
  403. data/test/wsdl/soap/test_soapbodyparts.rb +79 -0
  404. data/test/wsdl/soap/wsdl2ruby/echo_version.rb +1 -0
  405. data/test/wsdl/soap/wsdl2ruby/echo_versionDriver.rb +10 -0
  406. data/test/wsdl/soap/wsdl2ruby/echo_versionMappingRegistry.rb +4 -0
  407. data/test/wsdl/soap/wsdl2ruby/echo_versionServant.rb +3 -0
  408. data/test/wsdl/soap/wsdl2ruby/echo_version_service.cgi +3 -0
  409. data/test/wsdl/soap/wsdl2ruby/echo_version_service.rb +7 -0
  410. data/test/wsdl/soap/wsdl2ruby/echo_version_serviceClient.rb +34 -0
  411. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +21 -0
  412. data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +34 -0
  413. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +58 -0
  414. data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +36 -0
  415. data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +32 -0
  416. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +48 -0
  417. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +55 -0
  418. data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
  419. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +37 -0
  420. data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
  421. data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +53 -0
  422. data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
  423. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +83 -0
  424. data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +102 -0
  425. data/test/wsdl/soaptype/soaptype.wsdl +61 -0
  426. data/test/wsdl/soaptype/test_soaptype.rb +178 -0
  427. data/test/wsdl/test_emptycomplextype.rb +21 -0
  428. data/test/wsdl/test_fault.rb +50 -0
  429. data/test/wsdl/test_multiplefault.rb +41 -0
  430. data/test/xsd/codegen/test_classdef.rb +244 -0
  431. data/test/xsd/noencoding.xml +4 -0
  432. data/test/xsd/test_noencoding.rb +32 -0
  433. data/test/xsd/test_ns.rb +41 -0
  434. data/test/xsd/test_xmlschemaparser.rb +22 -0
  435. data/test/xsd/test_xsd.rb +1638 -0
  436. data/test/xsd/xmllang.xml +43 -0
  437. data/test/xsd/xmlschema.xml +12 -0
  438. data/test/xsd/xsd2ruby/expected_mysample.rb +65 -0
  439. data/test/xsd/xsd2ruby/expected_mysample_mapper.rb +11 -0
  440. data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +51 -0
  441. data/test/xsd/xsd2ruby/section.xsd +49 -0
  442. data/test/xsd/xsd2ruby/test_xsd2ruby.rb +90 -0
  443. metadata +568 -0
@@ -0,0 +1,248 @@
1
+ # SOAP4R - WSDL literal mapping registry.
2
+ # Copyright (C) 2000-2007 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/baseData'
10
+ require 'soap/mapping/mapping'
11
+ require 'soap/mapping/literalregistry'
12
+ require 'soap/mapping/typeMap'
13
+ require 'xsd/codegen/gensupport'
14
+ require 'xsd/namedelements'
15
+
16
+
17
+ module SOAP
18
+ module Mapping
19
+
20
+
21
+ class WSDLLiteralRegistry < LiteralRegistry
22
+ attr_reader :definedelements
23
+ attr_reader :definedtypes
24
+
25
+ def initialize(definedtypes = XSD::NamedElements::Empty,
26
+ definedelements = XSD::NamedElements::Empty)
27
+ super()
28
+ @definedtypes = definedtypes
29
+ @definedelements = definedelements
30
+ end
31
+
32
+ def obj2soap(obj, qname, obj_class = nil)
33
+ soap_obj = nil
34
+ if obj.is_a?(SOAPElement)
35
+ soap_obj = obj
36
+ elsif eledef = @definedelements[qname]
37
+ soap_obj = obj2elesoap(obj, eledef)
38
+ elsif type = @definedtypes[qname]
39
+ soap_obj = obj2typesoap(obj, type)
40
+ else
41
+ soap_obj = any2soap(obj, qname, obj_class)
42
+ end
43
+ return soap_obj if soap_obj
44
+ if @excn_handler_obj2soap
45
+ soap_obj = @excn_handler_obj2soap.call(obj) { |yield_obj|
46
+ Mapping.obj2soap(yield_obj, nil, nil, MAPPING_OPT)
47
+ }
48
+ return soap_obj if soap_obj
49
+ end
50
+ raise MappingError.new("cannot map #{obj.class.name} as #{qname}")
51
+ end
52
+
53
+ # node should be a SOAPElement
54
+ def soap2obj(node, obj_class = nil)
55
+ cause = nil
56
+ begin
57
+ return any2obj(node, obj_class)
58
+ rescue MappingError
59
+ cause = $!
60
+ end
61
+ if @excn_handler_soap2obj
62
+ begin
63
+ return @excn_handler_soap2obj.call(node) { |yield_node|
64
+ Mapping.soap2obj(yield_node, nil, nil, MAPPING_OPT)
65
+ }
66
+ rescue Exception
67
+ end
68
+ end
69
+ if node.respond_to?(:type)
70
+ raise MappingError.new("cannot map #{node.type.name} to Ruby object", cause)
71
+ else
72
+ raise MappingError.new("cannot map #{node.elename.name} to Ruby object", cause)
73
+ end
74
+ end
75
+
76
+ private
77
+
78
+ def obj2elesoap(obj, eledef)
79
+ ele = nil
80
+ qualified = (eledef.elementform == 'qualified')
81
+ if obj.is_a?(SOAPNil)
82
+ ele = obj
83
+ elsif eledef.type
84
+ if type = @definedtypes[eledef.type]
85
+ ele = obj2typesoap(obj, type)
86
+ elsif type = TypeMap[eledef.type]
87
+ ele = base2soap(obj, type)
88
+ else
89
+ raise MappingError.new("cannot find type #{eledef.type}")
90
+ end
91
+ elsif eledef.local_complextype
92
+ ele = obj2typesoap(obj, eledef.local_complextype)
93
+ elsif eledef.local_simpletype
94
+ ele = obj2typesoap(obj, eledef.local_simpletype)
95
+ else
96
+ raise MappingError.new('illegal schema?')
97
+ end
98
+ ele.elename = eledef.name
99
+ ele.qualified = qualified
100
+ ele
101
+ end
102
+
103
+ def obj2typesoap(obj, type)
104
+ ele = nil
105
+ if type.is_a?(::WSDL::XMLSchema::SimpleType)
106
+ ele = simpleobj2soap(obj, type)
107
+ else # complexType
108
+ if type.simplecontent
109
+ ele = simpleobj2soap(obj, type.simplecontent)
110
+ else
111
+ ele = complexobj2soap(obj, type)
112
+ end
113
+ ele.type = type.name
114
+ if type.base or Mapping.root_type_hint
115
+ Mapping.reset_root_type_hint
116
+ ele.force_typed = true
117
+ end
118
+ add_definedattributes2soap(obj, ele, type)
119
+ end
120
+ ele
121
+ end
122
+
123
+ def simpleobj2soap(obj, type)
124
+ type.check_lexical_format(obj)
125
+ return SOAPNil.new if obj.nil?
126
+ if type.base
127
+ ele = base2soap(obj, TypeMap[type.base])
128
+ elsif type.list
129
+ value = obj.is_a?(Array) ? obj.join(" ") : obj.to_s
130
+ ele = base2soap(value, SOAP::SOAPString)
131
+ else
132
+ raise MappingError.new("unsupported simpleType: #{type}")
133
+ end
134
+ ele
135
+ end
136
+
137
+ def complexobj2soap(obj, type)
138
+ ele = SOAPElement.new(type.name)
139
+ complexobj2sequencesoap(obj, ele, type, type.choice?, type.choice?)
140
+ ele
141
+ end
142
+
143
+ def complexobj2sequencesoap(obj, soap, type, nillable, is_choice)
144
+ added = false
145
+ type.elements.each do |child_ele|
146
+ case child_ele
147
+ when WSDL::XMLSchema::Any
148
+ any = Mapping.get_attributes_for_any(obj)
149
+ SOAPElement.from_objs(any).each do |child|
150
+ soap.add(child)
151
+ end
152
+ ele_added = true
153
+ when WSDL::XMLSchema::Element
154
+ ele_added = complexobj2soapchildren(obj, soap, child_ele, nillable)
155
+ when WSDL::XMLSchema::Sequence
156
+ ele_added = complexobj2sequencesoap(obj, soap, child_ele, nillable, false)
157
+ when WSDL::XMLSchema::Choice
158
+ ele_added = complexobj2sequencesoap(obj, soap, child_ele, true, true)
159
+ else
160
+ raise MappingError.new("unknown type: #{child_ele}")
161
+ end
162
+ added = true if ele_added
163
+ break if is_choice and ele_added
164
+ end
165
+ added
166
+ end
167
+
168
+ def complexobj2soapchildren(obj, soap, child_ele, nillable = false)
169
+ if child_ele.map_as_array?
170
+ complexobj2soapchildren_array(obj, soap, child_ele, nillable)
171
+ else
172
+ complexobj2soapchildren_single(obj, soap, child_ele, nillable)
173
+ end
174
+ end
175
+
176
+ def complexobj2soapchildren_array(obj, soap, child_ele, nillable)
177
+ child = Mapping.get_attribute(obj, child_ele.name.name)
178
+ if child.nil? and obj.is_a?(::Array)
179
+ child = obj
180
+ end
181
+ if child.nil?
182
+ return false if nillable
183
+ if child_soap = nil2soap(child_ele)
184
+ soap.add(child_soap)
185
+ return true
186
+ else
187
+ return false
188
+ end
189
+ end
190
+ unless child.respond_to?(:each)
191
+ return false
192
+ end
193
+ child.each do |item|
194
+ if item.is_a?(SOAPElement)
195
+ soap.add(item)
196
+ else
197
+ child_soap = obj2elesoap(item, child_ele)
198
+ soap.add(child_soap)
199
+ end
200
+ end
201
+ true
202
+ end
203
+
204
+ def complexobj2soapchildren_single(obj, soap, child_ele, nillable)
205
+ child = Mapping.get_attribute(obj, child_ele.name.name)
206
+ case child
207
+ when NilClass
208
+ return false if nillable
209
+ if child_soap = nil2soap(child_ele)
210
+ soap.add(child_soap)
211
+ true
212
+ else
213
+ false
214
+ end
215
+ when SOAPElement
216
+ soap.add(child)
217
+ true
218
+ else
219
+ child_soap = obj2elesoap(child, child_ele)
220
+ soap.add(child_soap)
221
+ true
222
+ end
223
+ end
224
+
225
+ def nil2soap(ele)
226
+ if ele.nillable
227
+ obj2elesoap(nil, ele) # add an empty element
228
+ elsif ele.minoccurs == 0
229
+ nil # intends no element
230
+ else
231
+ warn("nil not allowed: #{ele.name.name}")
232
+ nil
233
+ end
234
+ end
235
+
236
+ def add_definedattributes2soap(obj, ele, typedef)
237
+ if typedef.attributes
238
+ typedef.attributes.each do |at|
239
+ value = get_xmlattr_value(obj, at.name)
240
+ ele.extraattr[at.name] = value unless value.nil?
241
+ end
242
+ end
243
+ end
244
+ end
245
+
246
+
247
+ end
248
+ end
@@ -0,0 +1,59 @@
1
+ # SOAP4R - Marshalling/Unmarshalling Ruby's object using SOAP Encoding.
2
+ # Copyright (C) 2000-2007 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/mapping"
10
+ require "soap/processor"
11
+
12
+
13
+ module SOAP
14
+
15
+
16
+ module Marshal
17
+ # Trying xsd:dateTime data to be recovered as aTime.
18
+ MarshalMappingRegistry = Mapping::EncodedRegistry.new(
19
+ :allow_original_mapping => true)
20
+ MarshalMappingRegistry.add(
21
+ Time,
22
+ ::SOAP::SOAPDateTime,
23
+ ::SOAP::Mapping::EncodedRegistry::DateTimeFactory
24
+ )
25
+
26
+ class << self
27
+ public
28
+ def dump(obj, io = nil)
29
+ marshal(obj, MarshalMappingRegistry, io)
30
+ end
31
+
32
+ def load(stream)
33
+ unmarshal(stream, MarshalMappingRegistry)
34
+ end
35
+
36
+ def marshal(obj, mapping_registry = MarshalMappingRegistry, io = nil)
37
+ elename = Mapping.name2elename(obj.class.to_s)
38
+ soap_obj = Mapping.obj2soap(obj, mapping_registry)
39
+ body = SOAPBody.new
40
+ body.add(elename, soap_obj)
41
+ env = SOAPEnvelope.new(nil, body)
42
+ SOAP::Processor.marshal(env, {}, io)
43
+ end
44
+
45
+ def unmarshal(stream, mapping_registry = MarshalMappingRegistry)
46
+ env = SOAP::Processor.unmarshal(stream)
47
+ if env.nil?
48
+ raise ArgumentError.new("Illegal SOAP marshal format.")
49
+ end
50
+ Mapping.soap2obj(env.body.root_node, mapping_registry)
51
+ end
52
+ end
53
+ end
54
+
55
+
56
+ end
57
+
58
+
59
+ SOAPMarshal = SOAP::Marshal
@@ -0,0 +1,241 @@
1
+ # SOAP4R - MIME Message implementation.
2
+ # Copyright (C) 2002 Jamie Herre.
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/attachment'
10
+
11
+
12
+ module SOAP
13
+
14
+
15
+ # Classes for MIME message handling. Should be put somewhere else!
16
+ # Tried using the 'tmail' module but found that I needed something
17
+ # lighter in weight.
18
+
19
+
20
+ class MIMEMessage
21
+ class MIMEMessageError < StandardError; end
22
+
23
+ MultipartContentType = 'multipart/\w+'
24
+
25
+ class Header
26
+ attr_accessor :str, :key, :root
27
+
28
+ def initialize
29
+ @attrs = {}
30
+ end
31
+
32
+ def [](key)
33
+ @attrs[key]
34
+ end
35
+
36
+ def []=(key, value)
37
+ @attrs[key] = value
38
+ end
39
+
40
+ def to_s
41
+ @key + ": " + @str
42
+ end
43
+ end
44
+
45
+ class Headers < Hash
46
+ def self.parse(str)
47
+ new.parse(str)
48
+ end
49
+
50
+ def parse(str)
51
+ header_cache = nil
52
+ str.each do |line|
53
+ case line
54
+ when /^\A[^\: \t]+:\s*.+$/
55
+ parse_line(header_cache) if header_cache
56
+ header_cache = line.sub(/\r?\n\z/, '')
57
+ when /^\A\s+(.*)$/
58
+ # a continuous line at the beginning line crashes here.
59
+ header_cache << line
60
+ else
61
+ raise RuntimeError.new("unexpected header: #{line.inspect}")
62
+ end
63
+ end
64
+ parse_line(header_cache) if header_cache
65
+ self
66
+ end
67
+
68
+ def parse_line(line)
69
+ if /^\A([^\: \t]+):\s*(.+)\z/ =~ line
70
+ header = parse_rhs($2.strip)
71
+ header.key = $1.strip
72
+ self[header.key.downcase] = header
73
+ else
74
+ raise RuntimeError.new("unexpected header line: #{line.inspect}")
75
+ end
76
+ end
77
+
78
+ def parse_rhs(str)
79
+ a = str.split(/;+\s+/)
80
+ header = Header.new
81
+ header.str = str
82
+ header.root = a.shift
83
+ a.each do |pair|
84
+ if pair =~ /(\w+)\s*=\s*"?([^"]+)"?/
85
+ header[$1.downcase] = $2
86
+ else
87
+ raise RuntimeError.new("unexpected header component: #{pair.inspect}")
88
+ end
89
+ end
90
+ header
91
+ end
92
+
93
+ def add(key, value)
94
+ if key != nil and value != nil
95
+ header = parse_rhs(value)
96
+ header.key = key
97
+ self[key.downcase] = header
98
+ end
99
+ end
100
+
101
+ def to_s
102
+ self.values.collect { |hdr|
103
+ hdr.to_s
104
+ }.join("\r\n")
105
+ end
106
+ end
107
+
108
+ class Part
109
+ attr_accessor :headers, :body
110
+
111
+ def initialize
112
+ @headers = Headers.new
113
+ @headers.add("Content-Transfer-Encoding", "8bit")
114
+ @body = nil
115
+ @contentid = nil
116
+ end
117
+
118
+ def self.parse(str)
119
+ new.parse(str)
120
+ end
121
+
122
+ def parse(str)
123
+ headers, body = str.split(/\r\n\r\n/, 2)
124
+ if headers != nil and body != nil
125
+ @headers = Headers.parse(headers)
126
+ @body = body.sub(/\r\n\z/, '')
127
+ else
128
+ raise RuntimeError.new("unexpected part: #{str.inspect}")
129
+ end
130
+ self
131
+ end
132
+
133
+ def contentid
134
+ if @contentid == nil and @headers.key?('content-id')
135
+ @contentid = @headers['content-id'].str
136
+ @contentid = $1 if @contentid =~ /^<(.+)>$/
137
+ end
138
+ @contentid
139
+ end
140
+
141
+ alias content body
142
+
143
+ def to_s
144
+ @headers.to_s + "\r\n\r\n" + @body
145
+ end
146
+ end
147
+
148
+ def initialize
149
+ @parts = []
150
+ @headers = Headers.new
151
+ @root = nil
152
+ @boundary = nil
153
+ end
154
+
155
+ def self.parse(head, str)
156
+ new.parse(head, str)
157
+ end
158
+
159
+ attr_reader :parts, :headers
160
+
161
+ def close
162
+ @headers.add(
163
+ "Content-Type",
164
+ "multipart/related; type=\"text/xml\"; boundary=\"#{boundary}\"; start=\"#{@parts[0].contentid}\""
165
+ )
166
+ end
167
+
168
+ def parse(head, str)
169
+ @headers = Headers.parse(head + "\r\n" + "From: jfh\r\n")
170
+ boundary = @headers['content-type']['boundary']
171
+ if boundary != nil
172
+ parts = str.split(/--#{Regexp.quote(boundary)}\s*(?:\r\n|--\r\n)/)
173
+ part = parts.shift # preamble must be ignored.
174
+ @parts = parts.collect { |part| Part.parse(part) }
175
+ else
176
+ @parts = [Part.parse(str)]
177
+ end
178
+ if @parts.length < 1
179
+ raise MIMEMessageError.new("This message contains no valid parts!")
180
+ end
181
+ self
182
+ end
183
+
184
+ def root
185
+ if @root == nil
186
+ start = @headers['content-type']['start']
187
+ @root = (start && @parts.find { |prt| prt.contentid == start }) ||
188
+ @parts[0]
189
+ end
190
+ @root
191
+ end
192
+
193
+ def boundary
194
+ if @boundary == nil
195
+ @boundary = "----=Part_" + __id__.to_s + rand.to_s
196
+ end
197
+ @boundary
198
+ end
199
+
200
+ def add_part(content)
201
+ part = Part.new
202
+ part.headers.add("Content-Type",
203
+ "text/xml; charset=" + XSD::Charset.xml_encoding_label)
204
+ part.headers.add("Content-ID", Attachment.contentid(part))
205
+ part.body = content
206
+ @parts.unshift(part)
207
+ end
208
+
209
+ def add_attachment(attach)
210
+ part = Part.new
211
+ part.headers.add("Content-Type", attach.contenttype)
212
+ part.headers.add("Content-ID", attach.mime_contentid)
213
+ part.body = attach.content
214
+ @parts.unshift(part)
215
+ end
216
+
217
+ def has_parts?
218
+ (@parts.length > 0)
219
+ end
220
+
221
+ def headers_str
222
+ @headers.to_s
223
+ end
224
+
225
+ def content_str
226
+ str = ''
227
+ @parts.each do |prt|
228
+ str << "--" + boundary + "\r\n"
229
+ str << prt.to_s + "\r\n"
230
+ end
231
+ str << '--' + boundary + "--\r\n"
232
+ str
233
+ end
234
+
235
+ def to_s
236
+ str = headers_str + "\r\n\r\n" + conent_str
237
+ end
238
+ end
239
+
240
+
241
+ end