allegro_api_client 0.0.1

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 (296) hide show
  1. checksums.yaml +7 -0
  2. data/.bundle/config +3 -0
  3. data/Gemfile +3 -0
  4. data/Gemfile.lock +25 -0
  5. data/README.md +19 -0
  6. data/apiclient.gemspec +24 -0
  7. data/gems/ruby/2.1.0/bin/httparty +23 -0
  8. data/gems/ruby/2.1.0/bin/rake +23 -0
  9. data/gems/ruby/2.1.0/build_info/git_repository-0.0.11.info +1 -0
  10. data/gems/ruby/2.1.0/build_info/httparty-0.13.1.info +1 -0
  11. data/gems/ruby/2.1.0/build_info/multi_xml-0.5.5.info +1 -0
  12. data/gems/ruby/2.1.0/build_info/rake-10.3.2.info +1 -0
  13. data/gems/ruby/2.1.0/cache/git_repository-0.0.11.gem +0 -0
  14. data/gems/ruby/2.1.0/cache/httparty-0.13.1.gem +0 -0
  15. data/gems/ruby/2.1.0/cache/multi_xml-0.5.5.gem +0 -0
  16. data/gems/ruby/2.1.0/cache/rake-10.3.2.gem +0 -0
  17. data/gems/ruby/2.1.0/gems/git_repository-0.0.11/lib/git_repository.rb +62 -0
  18. data/gems/ruby/2.1.0/gems/httparty-0.13.1/.gitignore +10 -0
  19. data/gems/ruby/2.1.0/gems/httparty-0.13.1/.travis.yml +7 -0
  20. data/gems/ruby/2.1.0/gems/httparty-0.13.1/Gemfile +14 -0
  21. data/gems/ruby/2.1.0/gems/httparty-0.13.1/Guardfile +16 -0
  22. data/gems/ruby/2.1.0/gems/httparty-0.13.1/History +303 -0
  23. data/gems/ruby/2.1.0/gems/httparty-0.13.1/MIT-LICENSE +20 -0
  24. data/gems/ruby/2.1.0/gems/httparty-0.13.1/README.md +74 -0
  25. data/gems/ruby/2.1.0/gems/httparty-0.13.1/Rakefile +12 -0
  26. data/gems/ruby/2.1.0/gems/httparty-0.13.1/bin/httparty +117 -0
  27. data/gems/ruby/2.1.0/gems/httparty-0.13.1/cucumber.yml +1 -0
  28. data/gems/ruby/2.1.0/gems/httparty-0.13.1/examples/aaws.rb +32 -0
  29. data/gems/ruby/2.1.0/gems/httparty-0.13.1/examples/basic.rb +28 -0
  30. data/gems/ruby/2.1.0/gems/httparty-0.13.1/examples/crack.rb +19 -0
  31. data/gems/ruby/2.1.0/gems/httparty-0.13.1/examples/custom_parsers.rb +67 -0
  32. data/gems/ruby/2.1.0/gems/httparty-0.13.1/examples/delicious.rb +37 -0
  33. data/gems/ruby/2.1.0/gems/httparty-0.13.1/examples/google.rb +16 -0
  34. data/gems/ruby/2.1.0/gems/httparty-0.13.1/examples/headers_and_user_agents.rb +6 -0
  35. data/gems/ruby/2.1.0/gems/httparty-0.13.1/examples/nokogiri_html_parser.rb +22 -0
  36. data/gems/ruby/2.1.0/gems/httparty-0.13.1/examples/rubyurl.rb +14 -0
  37. data/gems/ruby/2.1.0/gems/httparty-0.13.1/examples/stackexchange.rb +24 -0
  38. data/gems/ruby/2.1.0/gems/httparty-0.13.1/examples/tripit_sign_in.rb +33 -0
  39. data/gems/ruby/2.1.0/gems/httparty-0.13.1/examples/twitter.rb +31 -0
  40. data/gems/ruby/2.1.0/gems/httparty-0.13.1/examples/whoismyrep.rb +10 -0
  41. data/gems/ruby/2.1.0/gems/httparty-0.13.1/features/basic_authentication.feature +20 -0
  42. data/gems/ruby/2.1.0/gems/httparty-0.13.1/features/command_line.feature +7 -0
  43. data/gems/ruby/2.1.0/gems/httparty-0.13.1/features/deals_with_http_error_codes.feature +26 -0
  44. data/gems/ruby/2.1.0/gems/httparty-0.13.1/features/digest_authentication.feature +20 -0
  45. data/gems/ruby/2.1.0/gems/httparty-0.13.1/features/handles_compressed_responses.feature +27 -0
  46. data/gems/ruby/2.1.0/gems/httparty-0.13.1/features/handles_multiple_formats.feature +57 -0
  47. data/gems/ruby/2.1.0/gems/httparty-0.13.1/features/steps/env.rb +22 -0
  48. data/gems/ruby/2.1.0/gems/httparty-0.13.1/features/steps/httparty_response_steps.rb +52 -0
  49. data/gems/ruby/2.1.0/gems/httparty-0.13.1/features/steps/httparty_steps.rb +43 -0
  50. data/gems/ruby/2.1.0/gems/httparty-0.13.1/features/steps/mongrel_helper.rb +94 -0
  51. data/gems/ruby/2.1.0/gems/httparty-0.13.1/features/steps/remote_service_steps.rb +74 -0
  52. data/gems/ruby/2.1.0/gems/httparty-0.13.1/features/supports_read_timeout_option.feature +13 -0
  53. data/gems/ruby/2.1.0/gems/httparty-0.13.1/features/supports_redirection.feature +22 -0
  54. data/gems/ruby/2.1.0/gems/httparty-0.13.1/features/supports_timeout_option.feature +13 -0
  55. data/gems/ruby/2.1.0/gems/httparty-0.13.1/httparty.gemspec +26 -0
  56. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty.rb +600 -0
  57. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty/connection_adapter.rb +187 -0
  58. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty/cookie_hash.rb +22 -0
  59. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty/core_extensions.rb +32 -0
  60. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty/exceptions.rb +29 -0
  61. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty/hash_conversions.rb +51 -0
  62. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty/logger/apache_logger.rb +22 -0
  63. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty/logger/curl_logger.rb +48 -0
  64. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty/logger/logger.rb +18 -0
  65. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty/module_inheritable_attributes.rb +56 -0
  66. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty/net_digest_auth.rb +84 -0
  67. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty/parser.rb +141 -0
  68. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty/request.rb +331 -0
  69. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty/response.rb +72 -0
  70. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty/response/headers.rb +31 -0
  71. data/gems/ruby/2.1.0/gems/httparty-0.13.1/lib/httparty/version.rb +3 -0
  72. data/gems/ruby/2.1.0/gems/httparty-0.13.1/script/release +42 -0
  73. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/delicious.xml +23 -0
  74. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/empty.xml +0 -0
  75. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/google.html +3 -0
  76. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/ssl/generate.sh +29 -0
  77. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/ssl/generated/1fe462c2.0 +16 -0
  78. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/ssl/generated/bogushost.crt +13 -0
  79. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/ssl/generated/ca.crt +16 -0
  80. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/ssl/generated/ca.key +15 -0
  81. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/ssl/generated/selfsigned.crt +14 -0
  82. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/ssl/generated/server.crt +13 -0
  83. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/ssl/generated/server.key +15 -0
  84. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/ssl/openssl-exts.cnf +9 -0
  85. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/twitter.csv +2 -0
  86. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/twitter.json +1 -0
  87. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/twitter.xml +403 -0
  88. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/fixtures/undefined_method_add_node_for_nil.xml +2 -0
  89. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/httparty/connection_adapter_spec.rb +354 -0
  90. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/httparty/cookie_hash_spec.rb +83 -0
  91. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/httparty/exception_spec.rb +23 -0
  92. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/httparty/logger/apache_logger_spec.rb +26 -0
  93. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/httparty/logger/curl_logger_spec.rb +18 -0
  94. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/httparty/logger/logger_spec.rb +22 -0
  95. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/httparty/net_digest_auth_spec.rb +152 -0
  96. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/httparty/parser_spec.rb +165 -0
  97. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/httparty/request_spec.rb +638 -0
  98. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/httparty/response_spec.rb +221 -0
  99. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/httparty/ssl_spec.rb +74 -0
  100. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/httparty_spec.rb +764 -0
  101. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/spec.opts +2 -0
  102. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/spec_helper.rb +37 -0
  103. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/support/ssl_test_helper.rb +47 -0
  104. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/support/ssl_test_server.rb +80 -0
  105. data/gems/ruby/2.1.0/gems/httparty-0.13.1/spec/support/stub_response.rb +43 -0
  106. data/gems/ruby/2.1.0/gems/httparty-0.13.1/website/css/common.css +47 -0
  107. data/gems/ruby/2.1.0/gems/httparty-0.13.1/website/index.html +73 -0
  108. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/.yardopts +8 -0
  109. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/CHANGELOG.md +93 -0
  110. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/CONTRIBUTING.md +49 -0
  111. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/LICENSE.md +20 -0
  112. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/README.md +97 -0
  113. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/Rakefile +21 -0
  114. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/lib/multi_xml.rb +296 -0
  115. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/lib/multi_xml/parsers/libxml.rb +30 -0
  116. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/lib/multi_xml/parsers/libxml2_parser.rb +74 -0
  117. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/lib/multi_xml/parsers/nokogiri.rb +32 -0
  118. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/lib/multi_xml/parsers/ox.rb +97 -0
  119. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/lib/multi_xml/parsers/rexml.rb +113 -0
  120. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/lib/multi_xml/version.rb +3 -0
  121. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/multi_xml.gemspec +24 -0
  122. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/spec/helper.rb +17 -0
  123. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/spec/multi_xml_spec.rb +43 -0
  124. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/spec/parser_shared_example.rb +694 -0
  125. data/gems/ruby/2.1.0/gems/multi_xml-0.5.5/spec/speed.rb +63 -0
  126. data/gems/ruby/2.1.0/gems/rake-10.3.2/.autotest +7 -0
  127. data/gems/ruby/2.1.0/gems/rake-10.3.2/.gemtest +0 -0
  128. data/gems/ruby/2.1.0/gems/rake-10.3.2/.rubocop.yml +27 -0
  129. data/gems/ruby/2.1.0/gems/rake-10.3.2/.togglerc +7 -0
  130. data/gems/ruby/2.1.0/gems/rake-10.3.2/CONTRIBUTING.rdoc +34 -0
  131. data/gems/ruby/2.1.0/gems/rake-10.3.2/History.rdoc +609 -0
  132. data/gems/ruby/2.1.0/gems/rake-10.3.2/MIT-LICENSE +21 -0
  133. data/gems/ruby/2.1.0/gems/rake-10.3.2/Manifest.txt +162 -0
  134. data/gems/ruby/2.1.0/gems/rake-10.3.2/README.rdoc +137 -0
  135. data/gems/ruby/2.1.0/gems/rake-10.3.2/Rakefile +81 -0
  136. data/gems/ruby/2.1.0/gems/rake-10.3.2/bin/rake +33 -0
  137. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/command_line_usage.rdoc +158 -0
  138. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/example/Rakefile1 +38 -0
  139. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/example/Rakefile2 +35 -0
  140. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/example/a.c +6 -0
  141. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/example/b.c +6 -0
  142. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/example/main.c +11 -0
  143. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/glossary.rdoc +43 -0
  144. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/jamis.rb +591 -0
  145. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/proto_rake.rdoc +127 -0
  146. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/rake.1.gz +0 -0
  147. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/rakefile.rdoc +653 -0
  148. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/rational.rdoc +151 -0
  149. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.4.14.rdoc +23 -0
  150. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.4.15.rdoc +35 -0
  151. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.5.0.rdoc +53 -0
  152. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.5.3.rdoc +78 -0
  153. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.5.4.rdoc +46 -0
  154. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.6.0.rdoc +141 -0
  155. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.7.0.rdoc +119 -0
  156. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.7.1.rdoc +59 -0
  157. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.7.2.rdoc +121 -0
  158. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.7.3.rdoc +47 -0
  159. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.8.0.rdoc +114 -0
  160. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.8.2.rdoc +165 -0
  161. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.8.3.rdoc +112 -0
  162. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.8.4.rdoc +147 -0
  163. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.8.5.rdoc +53 -0
  164. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.8.6.rdoc +37 -0
  165. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.8.7.rdoc +55 -0
  166. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.9.0.rdoc +112 -0
  167. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.9.1.rdoc +52 -0
  168. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
  169. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.9.2.rdoc +49 -0
  170. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.9.3.rdoc +102 -0
  171. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.9.4.rdoc +60 -0
  172. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.9.5.rdoc +55 -0
  173. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-0.9.6.rdoc +64 -0
  174. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-10.0.0.rdoc +178 -0
  175. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-10.0.1.rdoc +58 -0
  176. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-10.0.2.rdoc +53 -0
  177. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-10.0.3.rdoc +191 -0
  178. data/gems/ruby/2.1.0/gems/rake-10.3.2/doc/release_notes/rake-10.1.0.rdoc +61 -0
  179. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake.rb +78 -0
  180. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/alt_system.rb +110 -0
  181. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/application.rb +783 -0
  182. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/backtrace.rb +23 -0
  183. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/clean.rb +76 -0
  184. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/cloneable.rb +16 -0
  185. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/.document +0 -0
  186. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/compositepublisher.rb +21 -0
  187. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/ftptools.rb +137 -0
  188. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/publisher.rb +81 -0
  189. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  190. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/sshpublisher.rb +61 -0
  191. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/sys.rb +4 -0
  192. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/cpu_counter.rb +109 -0
  193. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/default_loader.rb +14 -0
  194. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/dsl_definition.rb +198 -0
  195. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/early_time.rb +21 -0
  196. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/core.rb +25 -0
  197. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/module.rb +1 -0
  198. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/string.rb +173 -0
  199. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/time.rb +15 -0
  200. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_creation_task.rb +24 -0
  201. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_list.rb +414 -0
  202. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_task.rb +46 -0
  203. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_utils.rb +116 -0
  204. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_utils_ext.rb +144 -0
  205. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/gempackagetask.rb +4 -0
  206. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/invocation_chain.rb +56 -0
  207. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/invocation_exception_mixin.rb +16 -0
  208. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/linked_list.rb +103 -0
  209. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/loaders/makefile.rb +40 -0
  210. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/multi_task.rb +13 -0
  211. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/name_space.rb +38 -0
  212. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/packagetask.rb +202 -0
  213. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/pathmap.rb +3 -0
  214. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/phony.rb +15 -0
  215. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/private_reader.rb +20 -0
  216. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/promise.rb +99 -0
  217. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/pseudo_status.rb +29 -0
  218. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rake_module.rb +38 -0
  219. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rake_test_loader.rb +22 -0
  220. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rdoctask.rb +4 -0
  221. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ruby182_test_unit_fix.rb +29 -0
  222. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
  223. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/runtest.rb +27 -0
  224. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/scope.rb +42 -0
  225. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task.rb +383 -0
  226. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task_argument_error.rb +7 -0
  227. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task_arguments.rb +98 -0
  228. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task_manager.rb +310 -0
  229. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/tasklib.rb +24 -0
  230. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/testtask.rb +212 -0
  231. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/thread_history_display.rb +48 -0
  232. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/thread_pool.rb +164 -0
  233. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/trace_output.rb +22 -0
  234. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/version.rb +7 -0
  235. data/gems/ruby/2.1.0/gems/rake-10.3.2/lib/rake/win32.rb +56 -0
  236. data/gems/ruby/2.1.0/gems/rake-10.3.2/rakelib/publish.rake +20 -0
  237. data/gems/ruby/2.1.0/gems/rake-10.3.2/rakelib/test_times.rake +25 -0
  238. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/file_creation.rb +34 -0
  239. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/helper.rb +127 -0
  240. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/support/rakefile_definitions.rb +478 -0
  241. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/support/ruby_runner.rb +33 -0
  242. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_private_reader.rb +42 -0
  243. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake.rb +40 -0
  244. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_application.rb +641 -0
  245. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_application_options.rb +466 -0
  246. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_backtrace.rb +119 -0
  247. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_clean.rb +55 -0
  248. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_cpu_counter.rb +50 -0
  249. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_definitions.rb +79 -0
  250. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_directory_task.rb +63 -0
  251. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_dsl.rb +40 -0
  252. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_early_time.rb +31 -0
  253. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_extension.rb +59 -0
  254. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_creation_task.rb +56 -0
  255. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_list.rb +627 -0
  256. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_list_path_map.rb +8 -0
  257. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_task.rb +186 -0
  258. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_utils.rb +309 -0
  259. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_ftp_file.rb +74 -0
  260. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_functional.rb +482 -0
  261. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_invocation_chain.rb +64 -0
  262. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_linked_list.rb +84 -0
  263. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_makefile_loader.rb +46 -0
  264. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_multi_task.rb +58 -0
  265. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_name_space.rb +57 -0
  266. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_package_task.rb +79 -0
  267. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_path_map.rb +168 -0
  268. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_path_map_explode.rb +34 -0
  269. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_path_map_partial.rb +18 -0
  270. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_pseudo_status.rb +21 -0
  271. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_rake_test_loader.rb +20 -0
  272. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_reduce_compat.rb +26 -0
  273. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_require.rb +40 -0
  274. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_rules.rb +388 -0
  275. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_scope.rb +44 -0
  276. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task.rb +392 -0
  277. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_argument_parsing.rb +109 -0
  278. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_arguments.rb +127 -0
  279. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_lib.rb +9 -0
  280. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_manager.rb +178 -0
  281. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_manager_argument_resolution.rb +19 -0
  282. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_with_arguments.rb +171 -0
  283. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_test_task.rb +141 -0
  284. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_thread_pool.rb +142 -0
  285. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_top_level_functions.rb +71 -0
  286. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_win32.rb +72 -0
  287. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_thread_history_display.rb +101 -0
  288. data/gems/ruby/2.1.0/gems/rake-10.3.2/test/test_trace_output.rb +52 -0
  289. data/gems/ruby/2.1.0/specifications/git_repository-0.0.11.gemspec +16 -0
  290. data/gems/ruby/2.1.0/specifications/httparty-0.13.1.gemspec +36 -0
  291. data/gems/ruby/2.1.0/specifications/multi_xml-0.5.5.gemspec +31 -0
  292. data/gems/ruby/2.1.0/specifications/rake-10.3.2.gemspec +43 -0
  293. data/rakefile.rb +33 -0
  294. data/src/APIClient.rb +23 -0
  295. data/test/test_git_repository_commit.rb +19 -0
  296. metadata +395 -0
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2010-2013 Erik Michaels-Ober
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,97 @@
1
+ # MultiXML
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/multi_xml.png)][gem]
4
+ [![Build Status](https://secure.travis-ci.org/sferik/multi_xml.png?branch=master)][travis]
5
+ [![Dependency Status](https://gemnasium.com/sferik/multi_xml.png?travis)][gemnasium]
6
+ [![Code Climate](https://codeclimate.com/github/sferik/multi_xml.png)][codeclimate]
7
+ [![Coverage Status](https://coveralls.io/repos/sferik/multi_xml/badge.png?branch=master)][coveralls]
8
+
9
+ [gem]: https://rubygems.org/gems/multi_xml
10
+ [travis]: http://travis-ci.org/sferik/multi_xml
11
+ [gemnasium]: https://gemnasium.com/sferik/multi_xml
12
+ [codeclimate]: https://codeclimate.com/github/sferik/multi_xml
13
+ [coveralls]: https://coveralls.io/r/sferik/multi_xml
14
+
15
+ A generic swappable back-end for XML parsing
16
+
17
+ ## Installation
18
+ gem install multi_xml
19
+
20
+ To ensure the code you're installing hasn't been tampered with, it's
21
+ recommended that you verify the signature. To do this, you need to add my
22
+ public key as a trusted certificate (you only need to do this once):
23
+
24
+ gem cert --add <(curl -Ls https://raw.github.com/sferik/multi_xml/master/certs/sferik.pem)
25
+
26
+ Then, install the gem with the high security trust policy:
27
+
28
+ gem install multi_xml -P HighSecurity
29
+
30
+ ## Documentation
31
+ [http://rdoc.info/gems/multi_xml][documentation]
32
+
33
+ [documentation]: http://rdoc.info/gems/multi_xml
34
+
35
+ ## Usage Examples
36
+ Lots of Ruby libraries utilize XML parsing in some form, and everyone has their
37
+ favorite XML library. In order to best support multiple XML parsers and
38
+ libraries, `multi_xml` is a general-purpose swappable XML backend library. You
39
+ use it like so:
40
+ ```ruby
41
+ require 'multi_xml'
42
+
43
+ MultiXml.parser = :ox
44
+ MultiXml.parser = MultiXml::Parsers::Ox # Same as above
45
+ MultiXml.parse('<tag>This is the contents</tag>') # Parsed using Ox
46
+
47
+ MultiXml.parser = :libxml
48
+ MultiXml.parser = MultiXml::Parsers::Libxml # Same as above
49
+ MultiXml.parse('<tag>This is the contents</tag>') # Parsed using LibXML
50
+
51
+ MultiXml.parser = :nokogiri
52
+ MultiXml.parser = MultiXml::Parsers::Nokogiri # Same as above
53
+ MultiXml.parse('<tag>This is the contents</tag>') # Parsed using Nokogiri
54
+
55
+ MultiXml.parser = :rexml
56
+ MultiXml.parser = MultiXml::Parsers::Rexml # Same as above
57
+ MultiXml.parse('<tag>This is the contents</tag>') # Parsed using REXML
58
+ ```
59
+ The `parser` setter takes either a symbol or a class (to allow for custom XML
60
+ parsers) that responds to `.parse` at the class level.
61
+
62
+ MultiXML tries to have intelligent defaulting. That is, if you have any of the
63
+ supported parsers already loaded, it will utilize them before attempting to
64
+ load any. When loading, libraries are ordered by speed: first Ox, then LibXML,
65
+ then Nokogiri, and finally REXML.
66
+
67
+ ## Supported Ruby Versions
68
+ This library aims to support and is [tested against][travis] the following Ruby
69
+ implementations:
70
+
71
+ * Ruby 1.8.7
72
+ * Ruby 1.9.2
73
+ * Ruby 1.9.3
74
+ * Ruby 2.0.0
75
+
76
+ If something doesn't work on one of these interpreters, it's a bug.
77
+
78
+ This library may inadvertently work (or seem to work) on other Ruby
79
+ implementations, however support will only be provided for the versions listed
80
+ above.
81
+
82
+ If you would like this library to support another Ruby version, you may
83
+ volunteer to be a maintainer. Being a maintainer entails making sure all tests
84
+ run and pass on that implementation. When something breaks on your
85
+ implementation, you will be responsible for providing patches in a timely
86
+ fashion. If critical issues for a particular implementation exist at the time
87
+ of a major release, support for that Ruby version may be dropped.
88
+
89
+ ## Inspiration
90
+ MultiXML was inspired by [MultiJSON][].
91
+
92
+ [multijson]: https://github.com/intridea/multi_json/
93
+
94
+ ## Copyright
95
+ Copyright (c) 2010-2013 Erik Michaels-Ober. See [LICENSE][] for details.
96
+
97
+ [license]: LICENSE.md
@@ -0,0 +1,21 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task :test => :spec
8
+ task :default => :spec
9
+
10
+ namespace :doc do
11
+ require 'yard'
12
+ YARD::Rake::YardocTask.new do |task|
13
+ task.files = ['lib/**/*.rb', '-', 'LICENSE.md']
14
+ task.options = [
15
+ '--no-private',
16
+ '--protected',
17
+ '--output-dir', 'doc/yard',
18
+ '--markup', 'markdown',
19
+ ]
20
+ end
21
+ end
@@ -0,0 +1,296 @@
1
+ require 'base64'
2
+ require 'bigdecimal'
3
+ require 'date'
4
+ require 'stringio'
5
+ require 'time'
6
+ require 'yaml'
7
+
8
+ module MultiXml
9
+ class ParseError < StandardError; end
10
+ class DisallowedTypeError < StandardError
11
+ def initialize(type)
12
+ super "Disallowed type attribute: #{type.inspect}"
13
+ end
14
+ end
15
+
16
+ REQUIREMENT_MAP = [
17
+ ['ox', :ox],
18
+ ['libxml', :libxml],
19
+ ['nokogiri', :nokogiri],
20
+ ['rexml/document', :rexml]
21
+ ] unless defined?(REQUIREMENT_MAP)
22
+
23
+ CONTENT_ROOT = '__content__'.freeze unless defined?(CONTENT_ROOT)
24
+
25
+ unless defined?(PARSING)
26
+ PARSING = {
27
+ 'symbol' => Proc.new{|symbol| symbol.to_sym},
28
+ 'date' => Proc.new{|date| Date.parse(date)},
29
+ 'datetime' => Proc.new{|time| Time.parse(time).utc rescue DateTime.parse(time).utc},
30
+ 'integer' => Proc.new{|integer| integer.to_i},
31
+ 'float' => Proc.new{|float| float.to_f},
32
+ 'decimal' => Proc.new{|number| BigDecimal(number)},
33
+ 'boolean' => Proc.new{|boolean| !%w(0 false).include?(boolean.strip)},
34
+ 'string' => Proc.new{|string| string.to_s},
35
+ 'yaml' => Proc.new{|yaml| YAML::load(yaml) rescue yaml},
36
+ 'base64Binary' => Proc.new{|binary| ::Base64.decode64(binary)},
37
+ 'binary' => Proc.new{|binary, entity| parse_binary(binary, entity)},
38
+ 'file' => Proc.new{|file, entity| parse_file(file, entity)},
39
+ }
40
+
41
+ PARSING.update(
42
+ 'double' => PARSING['float'],
43
+ 'dateTime' => PARSING['datetime']
44
+ )
45
+ end
46
+
47
+ TYPE_NAMES = {
48
+ 'Symbol' => 'symbol',
49
+ 'Fixnum' => 'integer',
50
+ 'Bignum' => 'integer',
51
+ 'BigDecimal' => 'decimal',
52
+ 'Float' => 'float',
53
+ 'TrueClass' => 'boolean',
54
+ 'FalseClass' => 'boolean',
55
+ 'Date' => 'date',
56
+ 'DateTime' => 'datetime',
57
+ 'Time' => 'datetime',
58
+ 'Array' => 'array',
59
+ 'Hash' => 'hash'
60
+ } unless defined?(TYPE_NAMES)
61
+
62
+ DISALLOWED_XML_TYPES = %w(symbol yaml)
63
+
64
+ DEFAULT_OPTIONS = {
65
+ :typecast_xml_value => true,
66
+ :disallowed_types => DISALLOWED_XML_TYPES,
67
+ :symbolize_keys => false
68
+ }
69
+
70
+ class << self
71
+ # Get the current parser class.
72
+ def parser
73
+ return @parser if defined?(@parser)
74
+ self.parser = self.default_parser
75
+ @parser
76
+ end
77
+
78
+ # The default parser based on what you currently
79
+ # have loaded and installed. First checks to see
80
+ # if any parsers are already loaded, then checks
81
+ # to see which are installed if none are loaded.
82
+ def default_parser
83
+ return :ox if defined?(::Ox)
84
+ return :libxml if defined?(::LibXML)
85
+ return :nokogiri if defined?(::Nokogiri)
86
+
87
+ REQUIREMENT_MAP.each do |library, parser|
88
+ begin
89
+ require library
90
+ return parser
91
+ rescue LoadError
92
+ next
93
+ end
94
+ end
95
+ end
96
+
97
+ # Set the XML parser utilizing a symbol, string, or class.
98
+ # Supported by default are:
99
+ #
100
+ # * <tt>:libxml</tt>
101
+ # * <tt>:nokogiri</tt>
102
+ # * <tt>:ox</tt>
103
+ # * <tt>:rexml</tt>
104
+ def parser=(new_parser)
105
+ case new_parser
106
+ when String, Symbol
107
+ require "multi_xml/parsers/#{new_parser.to_s.downcase}"
108
+ @parser = MultiXml::Parsers.const_get("#{new_parser.to_s.split('_').map{|s| s.capitalize}.join('')}")
109
+ when Class, Module
110
+ @parser = new_parser
111
+ else
112
+ raise "Did not recognize your parser specification. Please specify either a symbol or a class."
113
+ end
114
+ end
115
+
116
+ # Parse an XML string or IO into Ruby.
117
+ #
118
+ # <b>Options</b>
119
+ #
120
+ # <tt>:symbolize_keys</tt> :: If true, will use symbols instead of strings for the keys.
121
+ #
122
+ # <tt>:disallowed_types</tt> :: Types to disallow from being typecasted. Defaults to `['yaml', 'symbol']`. Use `[]` to allow all types.
123
+ #
124
+ # <tt>:typecast_xml_value</tt> :: If true, won't typecast values for parsed document
125
+ def parse(xml, options={})
126
+ xml ||= ''
127
+
128
+ options = DEFAULT_OPTIONS.merge(options)
129
+
130
+ xml.strip! if xml.respond_to?(:strip!)
131
+ begin
132
+ xml = StringIO.new(xml) unless xml.respond_to?(:read)
133
+
134
+ char = xml.getc
135
+ return {} if char.nil?
136
+ xml.ungetc(char)
137
+
138
+ hash = undasherize_keys(parser.parse(xml) || {})
139
+ hash = options[:typecast_xml_value] ? typecast_xml_value(hash, options[:disallowed_types]) : hash
140
+ rescue DisallowedTypeError
141
+ raise
142
+ rescue parser.parse_error => error
143
+ raise ParseError, error.message, error.backtrace
144
+ end
145
+ hash = symbolize_keys(hash) if options[:symbolize_keys]
146
+ hash
147
+ end
148
+
149
+ # This module decorates files with the <tt>original_filename</tt>
150
+ # and <tt>content_type</tt> methods.
151
+ module FileLike #:nodoc:
152
+ attr_writer :original_filename, :content_type
153
+
154
+ def original_filename
155
+ @original_filename || 'untitled'
156
+ end
157
+
158
+ def content_type
159
+ @content_type || 'application/octet-stream'
160
+ end
161
+ end
162
+
163
+ private
164
+
165
+ # TODO: Add support for other encodings
166
+ def parse_binary(binary, entity) #:nodoc:
167
+ case entity['encoding']
168
+ when 'base64'
169
+ Base64.decode64(binary)
170
+ else
171
+ binary
172
+ end
173
+ end
174
+
175
+ def parse_file(file, entity)
176
+ f = StringIO.new(Base64.decode64(file))
177
+ f.extend(FileLike)
178
+ f.original_filename = entity['name']
179
+ f.content_type = entity['content_type']
180
+ f
181
+ end
182
+
183
+ def symbolize_keys(params)
184
+ case params
185
+ when Hash
186
+ params.inject({}) do |result, (key, value)|
187
+ result.merge(key.to_sym => symbolize_keys(value))
188
+ end
189
+ when Array
190
+ params.map{|value| symbolize_keys(value)}
191
+ else
192
+ params
193
+ end
194
+ end
195
+
196
+ def undasherize_keys(params)
197
+ case params
198
+ when Hash
199
+ params.inject({}) do |hash, (key, value)|
200
+ hash[key.to_s.tr('-', '_')] = undasherize_keys(value)
201
+ hash
202
+ end
203
+ when Array
204
+ params.map{|value| undasherize_keys(value)}
205
+ else
206
+ params
207
+ end
208
+ end
209
+
210
+ def typecast_xml_value(value, disallowed_types=nil)
211
+ disallowed_types ||= DISALLOWED_XML_TYPES
212
+
213
+ case value
214
+ when Hash
215
+ if value.include?('type') && !value['type'].is_a?(Hash) && disallowed_types.include?(value['type'])
216
+ raise DisallowedTypeError, value['type']
217
+ end
218
+
219
+ if value['type'] == 'array'
220
+
221
+ # this commented-out suggestion helps to avoid the multiple attribute
222
+ # problem, but it breaks when there is only one item in the array.
223
+ #
224
+ # from: https://github.com/jnunemaker/httparty/issues/102
225
+ #
226
+ # _, entries = value.detect { |k, v| k != 'type' && v.is_a?(Array) }
227
+
228
+ # This attempt fails to consider the order that the detect method
229
+ # retrieves the entries.
230
+ #_, entries = value.detect {|key, _| key != 'type'}
231
+
232
+ # This approach ignores attribute entries that are not convertable
233
+ # to an Array which allows attributes to be ignored.
234
+ _, entries = value.detect {|k, v| k != 'type' && (v.is_a?(Array) || v.is_a?(Hash)) }
235
+
236
+ if entries.nil? || (entries.is_a?(String) && entries.strip.empty?)
237
+ []
238
+ else
239
+ case entries
240
+ when Array
241
+ entries.map {|entry| typecast_xml_value(entry, disallowed_types)}
242
+ when Hash
243
+ [typecast_xml_value(entries, disallowed_types)]
244
+ else
245
+ raise "can't typecast #{entries.class.name}: #{entries.inspect}"
246
+ end
247
+ end
248
+ elsif value.has_key?(CONTENT_ROOT)
249
+ content = value[CONTENT_ROOT]
250
+ if block = PARSING[value['type']]
251
+ if block.arity == 1
252
+ value.delete('type') if PARSING[value['type']]
253
+ if value.keys.size > 1
254
+ value[CONTENT_ROOT] = block.call(content)
255
+ value
256
+ else
257
+ block.call(content)
258
+ end
259
+ else
260
+ block.call(content, value)
261
+ end
262
+ else
263
+ value.keys.size > 1 ? value : content
264
+ end
265
+ elsif value['type'] == 'string' && value['nil'] != 'true'
266
+ ''
267
+ # blank or nil parsed values are represented by nil
268
+ elsif value.empty? || value['nil'] == 'true'
269
+ nil
270
+ # If the type is the only element which makes it then
271
+ # this still makes the value nil, except if type is
272
+ # a XML node(where type['value'] is a Hash)
273
+ elsif value['type'] && value.size == 1 && !value['type'].is_a?(Hash)
274
+ nil
275
+ else
276
+ xml_value = value.inject({}) do |hash, (k, v)|
277
+ hash[k] = typecast_xml_value(v, disallowed_types)
278
+ hash
279
+ end
280
+
281
+ # Turn {:files => {:file => #<StringIO>} into {:files => #<StringIO>} so it is compatible with
282
+ # how multipart uploaded files from HTML appear
283
+ xml_value['file'].is_a?(StringIO) ? xml_value['file'] : xml_value
284
+ end
285
+ when Array
286
+ value.map!{|i| typecast_xml_value(i, disallowed_types)}
287
+ value.length > 1 ? value : value.first
288
+ when String
289
+ value
290
+ else
291
+ raise "can't typecast #{value.class.name}: #{value.inspect}"
292
+ end
293
+ end
294
+ end
295
+
296
+ end
@@ -0,0 +1,30 @@
1
+ require 'libxml' unless defined?(LibXML)
2
+ require 'multi_xml/parsers/libxml2_parser'
3
+
4
+ module MultiXml
5
+ module Parsers
6
+ module Libxml #:nodoc:
7
+ include Libxml2Parser
8
+
9
+ extend self
10
+
11
+ def parse_error() ::LibXML::XML::Error end
12
+
13
+ def parse(xml)
14
+ node_to_hash(LibXML::XML::Parser.io(xml).parse.root)
15
+ end
16
+
17
+ def each_child(node, &block)
18
+ node.each_child(&block)
19
+ end
20
+
21
+ def each_attr(node, &block)
22
+ node.each_attr(&block)
23
+ end
24
+
25
+ def node_name(node)
26
+ node.name
27
+ end
28
+ end
29
+ end
30
+ end