husc 0.1.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 (1028) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +6 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +7 -0
  7. data/Gemfile.lock +64 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +44 -0
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/husc.gemspec +29 -0
  14. data/lib/husc.rb +213 -0
  15. data/lib/husc/version.rb +3 -0
  16. data/vendor/bundle/bin/htmldiff +29 -0
  17. data/vendor/bundle/bin/ldiff +29 -0
  18. data/vendor/bundle/bin/nokogiri +27 -0
  19. data/vendor/bundle/bin/rake +27 -0
  20. data/vendor/bundle/bin/rspec +27 -0
  21. data/vendor/bundle/cache/connection_pool-2.2.2.gem +0 -0
  22. data/vendor/bundle/cache/diff-lcs-1.3.gem +0 -0
  23. data/vendor/bundle/cache/domain_name-0.5.20190701.gem +0 -0
  24. data/vendor/bundle/cache/http-cookie-1.0.3.gem +0 -0
  25. data/vendor/bundle/cache/mechanize-2.7.6.gem +0 -0
  26. data/vendor/bundle/cache/mime-types-3.3.1.gem +0 -0
  27. data/vendor/bundle/cache/mime-types-data-3.2019.1009.gem +0 -0
  28. data/vendor/bundle/cache/mini_portile2-2.4.0.gem +0 -0
  29. data/vendor/bundle/cache/net-http-digest_auth-1.4.1.gem +0 -0
  30. data/vendor/bundle/cache/net-http-persistent-3.1.0.gem +0 -0
  31. data/vendor/bundle/cache/nokogiri-1.10.7.gem +0 -0
  32. data/vendor/bundle/cache/ntlm-http-0.1.1.gem +0 -0
  33. data/vendor/bundle/cache/rake-12.3.3.gem +0 -0
  34. data/vendor/bundle/cache/rspec-3.9.0.gem +0 -0
  35. data/vendor/bundle/cache/rspec-core-3.9.1.gem +0 -0
  36. data/vendor/bundle/cache/rspec-expectations-3.9.0.gem +0 -0
  37. data/vendor/bundle/cache/rspec-mocks-3.9.1.gem +0 -0
  38. data/vendor/bundle/cache/rspec-support-3.9.2.gem +0 -0
  39. data/vendor/bundle/cache/unf-0.1.4.gem +0 -0
  40. data/vendor/bundle/cache/unf_ext-0.0.7.6.gem +0 -0
  41. data/vendor/bundle/cache/webrobots-0.1.2.gem +0 -0
  42. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/nokogiri-1.10.7/gem.build_complete +0 -0
  43. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/nokogiri-1.10.7/gem_make.out +153 -0
  44. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/nokogiri-1.10.7/mkmf.log +562 -0
  45. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/nokogiri-1.10.7/nokogiri/nokogiri.bundle +0 -0
  46. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/unf_ext-0.0.7.6/gem.build_complete +0 -0
  47. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/unf_ext-0.0.7.6/gem_make.out +38 -0
  48. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/unf_ext-0.0.7.6/mkmf.log +35 -0
  49. data/vendor/bundle/extensions/x86_64-darwin-18/2.6.0-static/unf_ext-0.0.7.6/unf_ext.bundle +0 -0
  50. data/vendor/bundle/gems/connection_pool-2.2.2/.gitignore +4 -0
  51. data/vendor/bundle/gems/connection_pool-2.2.2/.travis.yml +10 -0
  52. data/vendor/bundle/gems/connection_pool-2.2.2/Changes.md +123 -0
  53. data/vendor/bundle/gems/connection_pool-2.2.2/Gemfile +3 -0
  54. data/vendor/bundle/gems/connection_pool-2.2.2/LICENSE +20 -0
  55. data/vendor/bundle/gems/connection_pool-2.2.2/README.md +107 -0
  56. data/vendor/bundle/gems/connection_pool-2.2.2/Rakefile +6 -0
  57. data/vendor/bundle/gems/connection_pool-2.2.2/connection_pool.gemspec +21 -0
  58. data/vendor/bundle/gems/connection_pool-2.2.2/lib/connection_pool.rb +161 -0
  59. data/vendor/bundle/gems/connection_pool-2.2.2/lib/connection_pool/monotonic_time.rb +66 -0
  60. data/vendor/bundle/gems/connection_pool-2.2.2/lib/connection_pool/timed_stack.rb +176 -0
  61. data/vendor/bundle/gems/connection_pool-2.2.2/lib/connection_pool/version.rb +3 -0
  62. data/vendor/bundle/gems/connection_pool-2.2.2/test/helper.rb +8 -0
  63. data/vendor/bundle/gems/connection_pool-2.2.2/test/test_connection_pool.rb +516 -0
  64. data/vendor/bundle/gems/connection_pool-2.2.2/test/test_connection_pool_timed_stack.rb +149 -0
  65. data/vendor/bundle/gems/diff-lcs-1.3/.rspec +1 -0
  66. data/vendor/bundle/gems/diff-lcs-1.3/Code-of-Conduct.md +74 -0
  67. data/vendor/bundle/gems/diff-lcs-1.3/Contributing.md +83 -0
  68. data/vendor/bundle/gems/diff-lcs-1.3/History.md +220 -0
  69. data/vendor/bundle/gems/diff-lcs-1.3/License.md +39 -0
  70. data/vendor/bundle/gems/diff-lcs-1.3/Manifest.txt +37 -0
  71. data/vendor/bundle/gems/diff-lcs-1.3/README.rdoc +84 -0
  72. data/vendor/bundle/gems/diff-lcs-1.3/Rakefile +57 -0
  73. data/vendor/bundle/gems/diff-lcs-1.3/autotest/discover.rb +1 -0
  74. data/vendor/bundle/gems/diff-lcs-1.3/bin/htmldiff +32 -0
  75. data/vendor/bundle/gems/diff-lcs-1.3/bin/ldiff +6 -0
  76. data/vendor/bundle/gems/diff-lcs-1.3/docs/COPYING.txt +339 -0
  77. data/vendor/bundle/gems/diff-lcs-1.3/docs/artistic.txt +127 -0
  78. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff-lcs.rb +3 -0
  79. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs.rb +725 -0
  80. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/array.rb +7 -0
  81. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/block.rb +37 -0
  82. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/callbacks.rb +322 -0
  83. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/change.rb +181 -0
  84. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/htmldiff.rb +149 -0
  85. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/hunk.rb +276 -0
  86. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/internals.rb +307 -0
  87. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/ldiff.rb +167 -0
  88. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/string.rb +5 -0
  89. data/vendor/bundle/gems/diff-lcs-1.3/spec/change_spec.rb +65 -0
  90. data/vendor/bundle/gems/diff-lcs-1.3/spec/diff_spec.rb +47 -0
  91. data/vendor/bundle/gems/diff-lcs-1.3/spec/fixtures/ds1.csv +50 -0
  92. data/vendor/bundle/gems/diff-lcs-1.3/spec/fixtures/ds2.csv +51 -0
  93. data/vendor/bundle/gems/diff-lcs-1.3/spec/hunk_spec.rb +72 -0
  94. data/vendor/bundle/gems/diff-lcs-1.3/spec/issues_spec.rb +49 -0
  95. data/vendor/bundle/gems/diff-lcs-1.3/spec/lcs_spec.rb +56 -0
  96. data/vendor/bundle/gems/diff-lcs-1.3/spec/ldiff_spec.rb +47 -0
  97. data/vendor/bundle/gems/diff-lcs-1.3/spec/patch_spec.rb +422 -0
  98. data/vendor/bundle/gems/diff-lcs-1.3/spec/sdiff_spec.rb +214 -0
  99. data/vendor/bundle/gems/diff-lcs-1.3/spec/spec_helper.rb +321 -0
  100. data/vendor/bundle/gems/diff-lcs-1.3/spec/traverse_balanced_spec.rb +310 -0
  101. data/vendor/bundle/gems/diff-lcs-1.3/spec/traverse_sequences_spec.rb +139 -0
  102. data/vendor/bundle/gems/domain_name-0.5.20190701/.document +5 -0
  103. data/vendor/bundle/gems/domain_name-0.5.20190701/.gitignore +17 -0
  104. data/vendor/bundle/gems/domain_name-0.5.20190701/.travis.yml +21 -0
  105. data/vendor/bundle/gems/domain_name-0.5.20190701/CHANGELOG.md +219 -0
  106. data/vendor/bundle/gems/domain_name-0.5.20190701/Gemfile +4 -0
  107. data/vendor/bundle/gems/domain_name-0.5.20190701/LICENSE.txt +78 -0
  108. data/vendor/bundle/gems/domain_name-0.5.20190701/README.md +67 -0
  109. data/vendor/bundle/gems/domain_name-0.5.20190701/Rakefile +111 -0
  110. data/vendor/bundle/gems/domain_name-0.5.20190701/data/public_suffix_list.dat +12985 -0
  111. data/vendor/bundle/gems/domain_name-0.5.20190701/domain_name.gemspec +36 -0
  112. data/vendor/bundle/gems/domain_name-0.5.20190701/lib/domain_name.rb +297 -0
  113. data/vendor/bundle/gems/domain_name-0.5.20190701/lib/domain_name/etld_data.rb +8787 -0
  114. data/vendor/bundle/gems/domain_name-0.5.20190701/lib/domain_name/etld_data.rb.erb +11 -0
  115. data/vendor/bundle/gems/domain_name-0.5.20190701/lib/domain_name/punycode.rb +283 -0
  116. data/vendor/bundle/gems/domain_name-0.5.20190701/lib/domain_name/version.rb +3 -0
  117. data/vendor/bundle/gems/domain_name-0.5.20190701/test/helper.rb +17 -0
  118. data/vendor/bundle/gems/domain_name-0.5.20190701/test/test_domain_name-punycode.rb +97 -0
  119. data/vendor/bundle/gems/domain_name-0.5.20190701/test/test_domain_name.rb +317 -0
  120. data/vendor/bundle/gems/domain_name-0.5.20190701/tool/gen_etld_data.rb +63 -0
  121. data/vendor/bundle/gems/http-cookie-1.0.3/.gitignore +17 -0
  122. data/vendor/bundle/gems/http-cookie-1.0.3/.travis.yml +21 -0
  123. data/vendor/bundle/gems/http-cookie-1.0.3/CHANGELOG.md +22 -0
  124. data/vendor/bundle/gems/http-cookie-1.0.3/Gemfile +4 -0
  125. data/vendor/bundle/gems/http-cookie-1.0.3/LICENSE.txt +24 -0
  126. data/vendor/bundle/gems/http-cookie-1.0.3/README.md +235 -0
  127. data/vendor/bundle/gems/http-cookie-1.0.3/Rakefile +20 -0
  128. data/vendor/bundle/gems/http-cookie-1.0.3/http-cookie.gemspec +34 -0
  129. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http-cookie.rb +1 -0
  130. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie.rb +685 -0
  131. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie/ruby_compat.rb +63 -0
  132. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie/scanner.rb +231 -0
  133. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie/version.rb +5 -0
  134. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie_jar.rb +344 -0
  135. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie_jar/abstract_saver.rb +65 -0
  136. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie_jar/abstract_store.rb +124 -0
  137. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie_jar/cookiestxt_saver.rb +106 -0
  138. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie_jar/hash_store.rb +163 -0
  139. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie_jar/mozilla_store.rb +458 -0
  140. data/vendor/bundle/gems/http-cookie-1.0.3/lib/http/cookie_jar/yaml_saver.rb +76 -0
  141. data/vendor/bundle/gems/http-cookie-1.0.3/test/helper.rb +55 -0
  142. data/vendor/bundle/gems/http-cookie-1.0.3/test/mechanize.yml +101 -0
  143. data/vendor/bundle/gems/http-cookie-1.0.3/test/simplecov_start.rb +2 -0
  144. data/vendor/bundle/gems/http-cookie-1.0.3/test/test_http_cookie.rb +1122 -0
  145. data/vendor/bundle/gems/http-cookie-1.0.3/test/test_http_cookie_jar.rb +985 -0
  146. data/vendor/bundle/gems/mechanize-2.7.6/.autotest +6 -0
  147. data/vendor/bundle/gems/mechanize-2.7.6/.gitignore +15 -0
  148. data/vendor/bundle/gems/mechanize-2.7.6/.travis.yml +36 -0
  149. data/vendor/bundle/gems/mechanize-2.7.6/CHANGELOG.rdoc +999 -0
  150. data/vendor/bundle/gems/mechanize-2.7.6/EXAMPLES.rdoc +192 -0
  151. data/vendor/bundle/gems/mechanize-2.7.6/GUIDE.rdoc +168 -0
  152. data/vendor/bundle/gems/mechanize-2.7.6/Gemfile +6 -0
  153. data/vendor/bundle/gems/mechanize-2.7.6/LICENSE.rdoc +20 -0
  154. data/vendor/bundle/gems/mechanize-2.7.6/README.rdoc +77 -0
  155. data/vendor/bundle/gems/mechanize-2.7.6/Rakefile +41 -0
  156. data/vendor/bundle/gems/mechanize-2.7.6/examples/flickr_upload.rb +22 -0
  157. data/vendor/bundle/gems/mechanize-2.7.6/examples/mech-dump.rb +5 -0
  158. data/vendor/bundle/gems/mechanize-2.7.6/examples/proxy_req.rb +7 -0
  159. data/vendor/bundle/gems/mechanize-2.7.6/examples/rubygems.rb +23 -0
  160. data/vendor/bundle/gems/mechanize-2.7.6/examples/spider.rb +22 -0
  161. data/vendor/bundle/gems/mechanize-2.7.6/examples/wikipedia_links_to_philosophy.rb +159 -0
  162. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize.rb +1369 -0
  163. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/chunked_termination_error.rb +7 -0
  164. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/content_type_error.rb +13 -0
  165. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/cookie.rb +73 -0
  166. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/cookie_jar.rb +190 -0
  167. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/directory_saver.rb +77 -0
  168. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/download.rb +84 -0
  169. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/element_matcher.rb +68 -0
  170. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/element_not_found_error.rb +19 -0
  171. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/file.rb +93 -0
  172. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/file_connection.rb +17 -0
  173. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/file_request.rb +30 -0
  174. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/file_response.rb +80 -0
  175. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/file_saver.rb +39 -0
  176. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form.rb +724 -0
  177. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/button.rb +6 -0
  178. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/check_box.rb +19 -0
  179. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/field.rb +124 -0
  180. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/file_upload.rb +21 -0
  181. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/hidden.rb +3 -0
  182. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/image_button.rb +19 -0
  183. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/keygen.rb +34 -0
  184. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/multi_select_list.rb +93 -0
  185. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/option.rb +51 -0
  186. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/radio_button.rb +69 -0
  187. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/reset.rb +3 -0
  188. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/select_list.rb +44 -0
  189. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/submit.rb +3 -0
  190. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/text.rb +3 -0
  191. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/form/textarea.rb +3 -0
  192. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/headers.rb +23 -0
  193. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/history.rb +82 -0
  194. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/http.rb +8 -0
  195. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/http/agent.rb +1281 -0
  196. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/http/auth_challenge.rb +65 -0
  197. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/http/auth_realm.rb +31 -0
  198. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/http/auth_store.rb +123 -0
  199. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/http/content_disposition_parser.rb +191 -0
  200. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/http/www_authenticate_parser.rb +178 -0
  201. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/image.rb +6 -0
  202. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/page.rb +648 -0
  203. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/page/base.rb +7 -0
  204. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/page/frame.rb +29 -0
  205. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/page/image.rb +182 -0
  206. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/page/label.rb +20 -0
  207. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/page/link.rb +108 -0
  208. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/page/meta_refresh.rb +78 -0
  209. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/parser.rb +182 -0
  210. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/pluggable_parsers.rb +179 -0
  211. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/prependable.rb +89 -0
  212. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/redirect_limit_reached_error.rb +19 -0
  213. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/redirect_not_get_or_head_error.rb +21 -0
  214. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/response_code_error.rb +26 -0
  215. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/response_read_error.rb +38 -0
  216. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/robots_disallowed_error.rb +28 -0
  217. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case.rb +330 -0
  218. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/.document +1 -0
  219. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/bad_chunking_servlet.rb +14 -0
  220. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/basic_auth_servlet.rb +24 -0
  221. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/content_type_servlet.rb +8 -0
  222. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/digest_auth_servlet.rb +33 -0
  223. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/file_upload_servlet.rb +20 -0
  224. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/form_servlet.rb +55 -0
  225. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/gzip_servlet.rb +32 -0
  226. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/header_servlet.rb +14 -0
  227. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/http_refresh_servlet.rb +8 -0
  228. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/infinite_redirect_servlet.rb +10 -0
  229. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/infinite_refresh_servlet.rb +9 -0
  230. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/many_cookies_as_string_servlet.rb +37 -0
  231. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/many_cookies_servlet.rb +33 -0
  232. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/modified_since_servlet.rb +21 -0
  233. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/ntlm_servlet.rb +30 -0
  234. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/one_cookie_no_spaces_servlet.rb +11 -0
  235. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/one_cookie_servlet.rb +11 -0
  236. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/quoted_value_cookie_servlet.rb +11 -0
  237. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/redirect_servlet.rb +13 -0
  238. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/referer_servlet.rb +12 -0
  239. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/refresh_with_empty_url.rb +15 -0
  240. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/refresh_without_url.rb +14 -0
  241. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/response_code_servlet.rb +15 -0
  242. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/robots_txt_servlet.rb +14 -0
  243. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/send_cookies_servlet.rb +19 -0
  244. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/server.rb +36 -0
  245. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/servlets.rb +58 -0
  246. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/test_case/verb_servlet.rb +11 -0
  247. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/unauthorized_error.rb +22 -0
  248. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/unsupported_scheme_error.rb +8 -0
  249. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/util.rb +161 -0
  250. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/version.rb +3 -0
  251. data/vendor/bundle/gems/mechanize-2.7.6/lib/mechanize/xml_file.rb +47 -0
  252. data/vendor/bundle/gems/mechanize-2.7.6/mechanize.gemspec +66 -0
  253. data/vendor/bundle/gems/mechanize-2.7.6/test/data/htpasswd +1 -0
  254. data/vendor/bundle/gems/mechanize-2.7.6/test/data/server.crt +16 -0
  255. data/vendor/bundle/gems/mechanize-2.7.6/test/data/server.csr +12 -0
  256. data/vendor/bundle/gems/mechanize-2.7.6/test/data/server.key +15 -0
  257. data/vendor/bundle/gems/mechanize-2.7.6/test/data/server.pem +15 -0
  258. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/alt_text.html +10 -0
  259. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/bad_form_test.html +9 -0
  260. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/button.jpg +0 -0
  261. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/canonical_uri.html +9 -0
  262. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/dir with spaces/foo.html +1 -0
  263. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/empty_form.html +6 -0
  264. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/file_upload.html +26 -0
  265. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/find_link.html +38 -0
  266. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_multi_select.html +16 -0
  267. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_multival.html +37 -0
  268. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_no_action.html +18 -0
  269. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_no_input_name.html +16 -0
  270. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_order_test.html +11 -0
  271. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_select.html +16 -0
  272. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_set_fields.html +14 -0
  273. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/form_test.html +188 -0
  274. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/frame_referer_test.html +10 -0
  275. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/frame_test.html +30 -0
  276. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/google.html +13 -0
  277. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/index.html +6 -0
  278. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/link with space.html +5 -0
  279. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/meta_cookie.html +11 -0
  280. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/no_title_test.html +6 -0
  281. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/noindex.html +9 -0
  282. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/rails_3_encoding_hack_form_test.html +27 -0
  283. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/relative/tc_relative_links.html +21 -0
  284. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/robots.html +8 -0
  285. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_bad_charset.html +9 -0
  286. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_bad_links.html +5 -0
  287. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_base_link.html +8 -0
  288. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_blank_form.html +11 -0
  289. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_charset.html +6 -0
  290. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_checkboxes.html +19 -0
  291. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_encoded_links.html +5 -0
  292. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_field_precedence.html +11 -0
  293. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_follow_meta.html +8 -0
  294. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_follow_meta_loop_1.html +8 -0
  295. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_follow_meta_loop_2.html +8 -0
  296. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_form_action.html +48 -0
  297. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_links.html +21 -0
  298. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_meta_in_body.html +9 -0
  299. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_pretty_print.html +17 -0
  300. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_referer.html +16 -0
  301. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_relative_links.html +19 -0
  302. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/tc_textarea.html +23 -0
  303. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/test_click.html +11 -0
  304. data/vendor/bundle/gems/mechanize-2.7.6/test/htdocs/unusual______.html +5 -0
  305. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize.rb +1361 -0
  306. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_cookie.rb +547 -0
  307. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_cookie_jar.rb +582 -0
  308. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_directory_saver.rb +59 -0
  309. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_download.rb +89 -0
  310. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_element_not_found_error.rb +15 -0
  311. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_file.rb +107 -0
  312. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_file_connection.rb +21 -0
  313. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_file_request.rb +25 -0
  314. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_file_response.rb +23 -0
  315. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_file_saver.rb +21 -0
  316. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form.rb +1012 -0
  317. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_check_box.rb +48 -0
  318. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_encoding.rb +109 -0
  319. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_field.rb +77 -0
  320. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_file_upload.rb +20 -0
  321. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_image_button.rb +12 -0
  322. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_keygen.rb +32 -0
  323. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_multi_select_list.rb +97 -0
  324. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_option.rb +59 -0
  325. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_radio_button.rb +95 -0
  326. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_select_list.rb +80 -0
  327. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_form_textarea.rb +52 -0
  328. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_headers.rb +35 -0
  329. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_history.rb +103 -0
  330. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_http_agent.rb +1754 -0
  331. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_http_auth_challenge.rb +63 -0
  332. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_http_auth_realm.rb +55 -0
  333. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_http_auth_store.rb +232 -0
  334. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_http_content_disposition_parser.rb +139 -0
  335. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_http_www_authenticate_parser.rb +203 -0
  336. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_image.rb +8 -0
  337. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_link.rb +146 -0
  338. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_page.rb +280 -0
  339. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_page_encoding.rb +187 -0
  340. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_page_frame.rb +16 -0
  341. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_page_image.rb +190 -0
  342. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_page_link.rb +373 -0
  343. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_page_meta_refresh.rb +150 -0
  344. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_parser.rb +315 -0
  345. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_pluggable_parser.rb +67 -0
  346. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_redirect_limit_reached_error.rb +24 -0
  347. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_redirect_not_get_or_head_error.rb +14 -0
  348. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_response_read_error.rb +28 -0
  349. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_subclass.rb +22 -0
  350. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_util.rb +143 -0
  351. data/vendor/bundle/gems/mechanize-2.7.6/test/test_mechanize_xml_file.rb +29 -0
  352. data/vendor/bundle/gems/mechanize-2.7.6/test/test_multi_select.rb +119 -0
  353. data/vendor/bundle/gems/mime-types-3.3.1/Code-of-Conduct.md +73 -0
  354. data/vendor/bundle/gems/mime-types-3.3.1/Contributing.md +143 -0
  355. data/vendor/bundle/gems/mime-types-3.3.1/History.md +240 -0
  356. data/vendor/bundle/gems/mime-types-3.3.1/Licence.md +25 -0
  357. data/vendor/bundle/gems/mime-types-3.3.1/Manifest.txt +31 -0
  358. data/vendor/bundle/gems/mime-types-3.3.1/README.rdoc +193 -0
  359. data/vendor/bundle/gems/mime-types-3.3.1/Rakefile +284 -0
  360. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime-types.rb +3 -0
  361. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/type.rb +587 -0
  362. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/type/columnar.rb +57 -0
  363. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types.rb +231 -0
  364. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/_columnar.rb +136 -0
  365. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/cache.rb +58 -0
  366. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/columnar.rb +3 -0
  367. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/container.rb +96 -0
  368. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/deprecations.rb +32 -0
  369. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/full.rb +19 -0
  370. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/loader.rb +146 -0
  371. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/logger.rb +39 -0
  372. data/vendor/bundle/gems/mime-types-3.3.1/lib/mime/types/registry.rb +90 -0
  373. data/vendor/bundle/gems/mime-types-3.3.1/test/bad-fixtures/malformed +9 -0
  374. data/vendor/bundle/gems/mime-types-3.3.1/test/fixture/json.json +1 -0
  375. data/vendor/bundle/gems/mime-types-3.3.1/test/fixture/old-data +9 -0
  376. data/vendor/bundle/gems/mime-types-3.3.1/test/fixture/yaml.yaml +55 -0
  377. data/vendor/bundle/gems/mime-types-3.3.1/test/minitest_helper.rb +13 -0
  378. data/vendor/bundle/gems/mime-types-3.3.1/test/test_mime_type.rb +610 -0
  379. data/vendor/bundle/gems/mime-types-3.3.1/test/test_mime_types.rb +169 -0
  380. data/vendor/bundle/gems/mime-types-3.3.1/test/test_mime_types_cache.rb +118 -0
  381. data/vendor/bundle/gems/mime-types-3.3.1/test/test_mime_types_class.rb +159 -0
  382. data/vendor/bundle/gems/mime-types-3.3.1/test/test_mime_types_lazy.rb +49 -0
  383. data/vendor/bundle/gems/mime-types-3.3.1/test/test_mime_types_loader.rb +32 -0
  384. data/vendor/bundle/gems/mime-types-data-3.2019.1009/Code-of-Conduct.md +75 -0
  385. data/vendor/bundle/gems/mime-types-data-3.2019.1009/Contributing.md +162 -0
  386. data/vendor/bundle/gems/mime-types-data-3.2019.1009/History.md +406 -0
  387. data/vendor/bundle/gems/mime-types-data-3.2019.1009/Licence.md +25 -0
  388. data/vendor/bundle/gems/mime-types-data-3.2019.1009/Manifest.txt +31 -0
  389. data/vendor/bundle/gems/mime-types-data-3.2019.1009/README.md +63 -0
  390. data/vendor/bundle/gems/mime-types-data-3.2019.1009/Rakefile +94 -0
  391. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime-types.json +1 -0
  392. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.content_type.column +2215 -0
  393. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.docs.column +2215 -0
  394. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.encoding.column +2215 -0
  395. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.flags.column +2215 -0
  396. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.friendly.column +2215 -0
  397. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.pext.column +2215 -0
  398. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.use_instead.column +2215 -0
  399. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.xrefs.column +2215 -0
  400. data/vendor/bundle/gems/mime-types-data-3.2019.1009/lib/mime-types-data.rb +3 -0
  401. data/vendor/bundle/gems/mime-types-data-3.2019.1009/lib/mime/types/data.rb +21 -0
  402. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/application.yaml +16361 -0
  403. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/audio.yaml +1644 -0
  404. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/chemical.yaml +71 -0
  405. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/conference.yaml +9 -0
  406. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/drawing.yaml +15 -0
  407. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/font.yaml +65 -0
  408. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/image.yaml +1069 -0
  409. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/message.yaml +200 -0
  410. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/model.yaml +302 -0
  411. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/multipart.yaml +179 -0
  412. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/text.yaml +1055 -0
  413. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/video.yaml +1070 -0
  414. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/world.yaml +8 -0
  415. data/vendor/bundle/gems/mini_portile2-2.4.0/.concourse.yml +83 -0
  416. data/vendor/bundle/gems/mini_portile2-2.4.0/.gitignore +7 -0
  417. data/vendor/bundle/gems/mini_portile2-2.4.0/.travis.yml +15 -0
  418. data/vendor/bundle/gems/mini_portile2-2.4.0/CHANGELOG.md +209 -0
  419. data/vendor/bundle/gems/mini_portile2-2.4.0/Gemfile +4 -0
  420. data/vendor/bundle/gems/mini_portile2-2.4.0/LICENSE.txt +20 -0
  421. data/vendor/bundle/gems/mini_portile2-2.4.0/README.md +245 -0
  422. data/vendor/bundle/gems/mini_portile2-2.4.0/Rakefile +29 -0
  423. data/vendor/bundle/gems/mini_portile2-2.4.0/appveyor.yml +25 -0
  424. data/vendor/bundle/gems/mini_portile2-2.4.0/concourse/mini_portile.yml +141 -0
  425. data/vendor/bundle/gems/mini_portile2-2.4.0/concourse/tasks/rake-test/task.ps1 +11 -0
  426. data/vendor/bundle/gems/mini_portile2-2.4.0/concourse/tasks/rake-test/task.sh +13 -0
  427. data/vendor/bundle/gems/mini_portile2-2.4.0/lib/mini_portile2.rb +3 -0
  428. data/vendor/bundle/gems/mini_portile2-2.4.0/lib/mini_portile2/mini_portile.rb +556 -0
  429. data/vendor/bundle/gems/mini_portile2-2.4.0/lib/mini_portile2/mini_portile_cmake.rb +40 -0
  430. data/vendor/bundle/gems/mini_portile2-2.4.0/lib/mini_portile2/version.rb +3 -0
  431. data/vendor/bundle/gems/mini_portile2-2.4.0/mini_portile2.gemspec +42 -0
  432. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/git/config +4 -0
  433. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/gpg-fixtures/data +1 -0
  434. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/gpg-fixtures/data.asc +9 -0
  435. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/gpg-fixtures/data.invalid.asc +9 -0
  436. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/patch 1.diff +7 -0
  437. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/test mini portile-1.0.0/configure +11 -0
  438. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/test-cmake-1.0/CMakeLists.txt +7 -0
  439. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/test-cmake-1.0/hello.c +4 -0
  440. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/test-download-archive.tar.gz +1 -0
  441. data/vendor/bundle/gems/mini_portile2-2.4.0/test/helper.rb +60 -0
  442. data/vendor/bundle/gems/mini_portile2-2.4.0/test/test_cmake.rb +64 -0
  443. data/vendor/bundle/gems/mini_portile2-2.4.0/test/test_cook.rb +115 -0
  444. data/vendor/bundle/gems/mini_portile2-2.4.0/test/test_digest.rb +215 -0
  445. data/vendor/bundle/gems/mini_portile2-2.4.0/test/test_download.rb +71 -0
  446. data/vendor/bundle/gems/mini_portile2-2.4.0/test/test_proxy.rb +121 -0
  447. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/.autotest +8 -0
  448. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/.travis.yml +16 -0
  449. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/History.txt +52 -0
  450. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/Manifest.txt +10 -0
  451. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/README.txt +44 -0
  452. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/Rakefile +25 -0
  453. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/lib/net/http/digest_auth.rb +173 -0
  454. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/sample/auth_server.rb +47 -0
  455. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/sample/net_http_example.rb +27 -0
  456. data/vendor/bundle/gems/net-http-digest_auth-1.4.1/test/test_net_http_digest_auth.rb +130 -0
  457. data/vendor/bundle/gems/net-http-persistent-3.1.0/.autotest +9 -0
  458. data/vendor/bundle/gems/net-http-persistent-3.1.0/.gemtest +0 -0
  459. data/vendor/bundle/gems/net-http-persistent-3.1.0/.travis.yml +24 -0
  460. data/vendor/bundle/gems/net-http-persistent-3.1.0/Gemfile +15 -0
  461. data/vendor/bundle/gems/net-http-persistent-3.1.0/History.txt +391 -0
  462. data/vendor/bundle/gems/net-http-persistent-3.1.0/Manifest.txt +14 -0
  463. data/vendor/bundle/gems/net-http-persistent-3.1.0/README.rdoc +82 -0
  464. data/vendor/bundle/gems/net-http-persistent-3.1.0/Rakefile +31 -0
  465. data/vendor/bundle/gems/net-http-persistent-3.1.0/lib/net/http/persistent.rb +1202 -0
  466. data/vendor/bundle/gems/net-http-persistent-3.1.0/lib/net/http/persistent/connection.rb +40 -0
  467. data/vendor/bundle/gems/net-http-persistent-3.1.0/lib/net/http/persistent/pool.rb +53 -0
  468. data/vendor/bundle/gems/net-http-persistent-3.1.0/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  469. data/vendor/bundle/gems/net-http-persistent-3.1.0/test/test_net_http_persistent.rb +1621 -0
  470. data/vendor/bundle/gems/net-http-persistent-3.1.0/test/test_net_http_persistent_timed_stack_multi.rb +151 -0
  471. data/vendor/bundle/gems/nokogiri-1.10.7/LICENSE-DEPENDENCIES.md +1614 -0
  472. data/vendor/bundle/gems/nokogiri-1.10.7/LICENSE.md +9 -0
  473. data/vendor/bundle/gems/nokogiri-1.10.7/README.md +198 -0
  474. data/vendor/bundle/gems/nokogiri-1.10.7/bin/nokogiri +118 -0
  475. data/vendor/bundle/gems/nokogiri-1.10.7/dependencies.yml +74 -0
  476. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/.sitearchdir.-.nokogiri.time +0 -0
  477. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/Makefile +629 -0
  478. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/depend +358 -0
  479. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/extconf.rb +686 -0
  480. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_document.c +170 -0
  481. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_document.h +10 -0
  482. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_document.o +0 -0
  483. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_element_description.c +279 -0
  484. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_element_description.h +10 -0
  485. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_element_description.o +0 -0
  486. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_entity_lookup.c +32 -0
  487. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_entity_lookup.h +8 -0
  488. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_entity_lookup.o +0 -0
  489. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_sax_parser_context.c +116 -0
  490. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_sax_parser_context.h +11 -0
  491. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_sax_parser_context.o +0 -0
  492. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_sax_push_parser.c +87 -0
  493. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_sax_push_parser.h +9 -0
  494. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/html_sax_push_parser.o +0 -0
  495. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/nokogiri.bundle +0 -0
  496. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/nokogiri.c +141 -0
  497. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/nokogiri.h +121 -0
  498. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/nokogiri.o +0 -0
  499. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_attr.c +103 -0
  500. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_attr.h +9 -0
  501. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_attr.o +0 -0
  502. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_attribute_decl.c +70 -0
  503. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_attribute_decl.h +9 -0
  504. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_attribute_decl.o +0 -0
  505. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_cdata.c +62 -0
  506. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_cdata.h +9 -0
  507. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_cdata.o +0 -0
  508. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_comment.c +69 -0
  509. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_comment.h +9 -0
  510. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_comment.o +0 -0
  511. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_document.c +608 -0
  512. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_document.h +23 -0
  513. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_document.o +0 -0
  514. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_document_fragment.c +48 -0
  515. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_document_fragment.h +10 -0
  516. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_document_fragment.o +0 -0
  517. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_dtd.c +202 -0
  518. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_dtd.h +10 -0
  519. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_dtd.o +0 -0
  520. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_element_content.c +123 -0
  521. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_element_content.h +10 -0
  522. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_element_content.o +0 -0
  523. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_element_decl.c +69 -0
  524. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_element_decl.h +9 -0
  525. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_element_decl.o +0 -0
  526. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_encoding_handler.c +79 -0
  527. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_encoding_handler.h +8 -0
  528. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_encoding_handler.o +0 -0
  529. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_entity_decl.c +110 -0
  530. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_entity_decl.h +10 -0
  531. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_entity_decl.o +0 -0
  532. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_entity_reference.c +52 -0
  533. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_entity_reference.h +9 -0
  534. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_entity_reference.o +0 -0
  535. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_io.c +61 -0
  536. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_io.h +11 -0
  537. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_io.o +0 -0
  538. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_libxml2_hacks.c +112 -0
  539. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_libxml2_hacks.h +12 -0
  540. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_libxml2_hacks.o +0 -0
  541. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_namespace.c +111 -0
  542. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_namespace.h +14 -0
  543. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_namespace.o +0 -0
  544. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_node.c +1753 -0
  545. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_node.h +13 -0
  546. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_node.o +0 -0
  547. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_node_set.c +486 -0
  548. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_node_set.h +12 -0
  549. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_node_set.o +0 -0
  550. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_processing_instruction.c +56 -0
  551. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_processing_instruction.h +9 -0
  552. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_processing_instruction.o +0 -0
  553. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_reader.c +668 -0
  554. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_reader.h +10 -0
  555. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_reader.o +0 -0
  556. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_relax_ng.c +161 -0
  557. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_relax_ng.h +9 -0
  558. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_relax_ng.o +0 -0
  559. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_parser.c +310 -0
  560. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_parser.h +39 -0
  561. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_parser.o +0 -0
  562. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_parser_context.c +262 -0
  563. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_parser_context.h +10 -0
  564. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_parser_context.o +0 -0
  565. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_push_parser.c +159 -0
  566. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_push_parser.h +9 -0
  567. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_sax_push_parser.o +0 -0
  568. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_schema.c +205 -0
  569. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_schema.h +9 -0
  570. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_schema.o +0 -0
  571. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_syntax_error.c +64 -0
  572. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_syntax_error.h +13 -0
  573. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_syntax_error.o +0 -0
  574. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_text.c +52 -0
  575. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_text.h +9 -0
  576. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_text.o +0 -0
  577. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_xpath_context.c +298 -0
  578. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_xpath_context.h +10 -0
  579. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xml_xpath_context.o +0 -0
  580. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xslt_stylesheet.c +270 -0
  581. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xslt_stylesheet.h +14 -0
  582. data/vendor/bundle/gems/nokogiri-1.10.7/ext/nokogiri/xslt_stylesheet.o +0 -0
  583. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri.rb +144 -0
  584. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css.rb +27 -0
  585. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/node.rb +52 -0
  586. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/parser.rb +750 -0
  587. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/parser.y +272 -0
  588. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/parser_extras.rb +91 -0
  589. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/syntax_error.rb +7 -0
  590. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/tokenizer.rb +153 -0
  591. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/tokenizer.rex +55 -0
  592. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/css/xpath_visitor.rb +230 -0
  593. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/decorators/slop.rb +42 -0
  594. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html.rb +37 -0
  595. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/builder.rb +35 -0
  596. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/document.rb +335 -0
  597. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/document_fragment.rb +49 -0
  598. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/element_description.rb +23 -0
  599. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/element_description_defaults.rb +671 -0
  600. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/entity_lookup.rb +13 -0
  601. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/sax/parser.rb +62 -0
  602. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/sax/parser_context.rb +16 -0
  603. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/html/sax/push_parser.rb +36 -0
  604. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/nokogiri.bundle +0 -0
  605. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/syntax_error.rb +4 -0
  606. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/version.rb +109 -0
  607. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml.rb +75 -0
  608. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/attr.rb +14 -0
  609. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/attribute_decl.rb +18 -0
  610. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/builder.rb +446 -0
  611. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/cdata.rb +11 -0
  612. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/character_data.rb +7 -0
  613. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/document.rb +285 -0
  614. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/document_fragment.rb +160 -0
  615. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/dtd.rb +32 -0
  616. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/element_content.rb +36 -0
  617. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/element_decl.rb +13 -0
  618. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/entity_decl.rb +19 -0
  619. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/entity_reference.rb +18 -0
  620. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/namespace.rb +13 -0
  621. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/node.rb +902 -0
  622. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/node/save_options.rb +61 -0
  623. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/node_set.rb +371 -0
  624. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/notation.rb +6 -0
  625. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/parse_options.rb +120 -0
  626. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/pp.rb +2 -0
  627. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/pp/character_data.rb +18 -0
  628. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/pp/node.rb +56 -0
  629. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/processing_instruction.rb +8 -0
  630. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/reader.rb +112 -0
  631. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/relax_ng.rb +32 -0
  632. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/sax.rb +4 -0
  633. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/sax/document.rb +171 -0
  634. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/sax/parser.rb +122 -0
  635. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/sax/parser_context.rb +16 -0
  636. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/sax/push_parser.rb +60 -0
  637. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/schema.rb +63 -0
  638. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/searchable.rb +230 -0
  639. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/syntax_error.rb +70 -0
  640. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/text.rb +9 -0
  641. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/xpath.rb +10 -0
  642. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/xpath/syntax_error.rb +11 -0
  643. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xml/xpath_context.rb +16 -0
  644. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xslt.rb +56 -0
  645. data/vendor/bundle/gems/nokogiri-1.10.7/lib/nokogiri/xslt/stylesheet.rb +25 -0
  646. data/vendor/bundle/gems/nokogiri-1.10.7/lib/xsd/xmlparser/nokogiri.rb +102 -0
  647. data/vendor/bundle/gems/nokogiri-1.10.7/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch +78 -0
  648. data/vendor/bundle/gems/nokogiri-1.10.7/patches/libxml2/0002-Remove-script-macro-support.patch +40 -0
  649. data/vendor/bundle/gems/nokogiri-1.10.7/patches/libxml2/0003-Update-entities-to-remove-handling-of-ssi.patch +44 -0
  650. data/vendor/bundle/gems/nokogiri-1.10.7/patches/libxml2/0004-libxml2.la-is-in-top_builddir.patch +25 -0
  651. data/vendor/bundle/gems/ntlm-http-0.1.1/README +25 -0
  652. data/vendor/bundle/gems/ntlm-http-0.1.1/Rakefile +66 -0
  653. data/vendor/bundle/gems/ntlm-http-0.1.1/examples/http.rb +86 -0
  654. data/vendor/bundle/gems/ntlm-http-0.1.1/examples/imap.rb +73 -0
  655. data/vendor/bundle/gems/ntlm-http-0.1.1/examples/smtp.rb +94 -0
  656. data/vendor/bundle/gems/ntlm-http-0.1.1/lib/net/ntlm.rb +774 -0
  657. data/vendor/bundle/gems/ntlm-http-0.1.1/lib/net/ntlm_http.rb +854 -0
  658. data/vendor/bundle/gems/ntlm-http-0.1.1/ntlm-http-0.1.1.gemspec +16 -0
  659. data/vendor/bundle/gems/ntlm-http-0.1.1/test/function_test.rb +111 -0
  660. data/vendor/bundle/gems/rake-12.3.3/CONTRIBUTING.rdoc +43 -0
  661. data/vendor/bundle/gems/rake-12.3.3/Gemfile +3 -0
  662. data/vendor/bundle/gems/rake-12.3.3/History.rdoc +2344 -0
  663. data/vendor/bundle/gems/rake-12.3.3/MIT-LICENSE +21 -0
  664. data/vendor/bundle/gems/rake-12.3.3/README.rdoc +156 -0
  665. data/vendor/bundle/gems/rake-12.3.3/Rakefile +41 -0
  666. data/vendor/bundle/gems/rake-12.3.3/azure-pipelines.yml +11 -0
  667. data/vendor/bundle/gems/rake-12.3.3/bin/bundle +105 -0
  668. data/vendor/bundle/gems/rake-12.3.3/bin/console +7 -0
  669. data/vendor/bundle/gems/rake-12.3.3/bin/rake +29 -0
  670. data/vendor/bundle/gems/rake-12.3.3/bin/rdoc +29 -0
  671. data/vendor/bundle/gems/rake-12.3.3/bin/rubocop +29 -0
  672. data/vendor/bundle/gems/rake-12.3.3/bin/setup +6 -0
  673. data/vendor/bundle/gems/rake-12.3.3/doc/command_line_usage.rdoc +158 -0
  674. data/vendor/bundle/gems/rake-12.3.3/doc/example/Rakefile1 +38 -0
  675. data/vendor/bundle/gems/rake-12.3.3/doc/example/Rakefile2 +35 -0
  676. data/vendor/bundle/gems/rake-12.3.3/doc/example/a.c +6 -0
  677. data/vendor/bundle/gems/rake-12.3.3/doc/example/b.c +6 -0
  678. data/vendor/bundle/gems/rake-12.3.3/doc/example/main.c +11 -0
  679. data/vendor/bundle/gems/rake-12.3.3/doc/glossary.rdoc +42 -0
  680. data/vendor/bundle/gems/rake-12.3.3/doc/jamis.rb +592 -0
  681. data/vendor/bundle/gems/rake-12.3.3/doc/proto_rake.rdoc +127 -0
  682. data/vendor/bundle/gems/rake-12.3.3/doc/rake.1 +156 -0
  683. data/vendor/bundle/gems/rake-12.3.3/doc/rakefile.rdoc +622 -0
  684. data/vendor/bundle/gems/rake-12.3.3/doc/rational.rdoc +151 -0
  685. data/vendor/bundle/gems/rake-12.3.3/exe/rake +27 -0
  686. data/vendor/bundle/gems/rake-12.3.3/lib/rake.rb +71 -0
  687. data/vendor/bundle/gems/rake-12.3.3/lib/rake/application.rb +824 -0
  688. data/vendor/bundle/gems/rake-12.3.3/lib/rake/backtrace.rb +24 -0
  689. data/vendor/bundle/gems/rake-12.3.3/lib/rake/clean.rb +78 -0
  690. data/vendor/bundle/gems/rake-12.3.3/lib/rake/cloneable.rb +17 -0
  691. data/vendor/bundle/gems/rake-12.3.3/lib/rake/cpu_counter.rb +107 -0
  692. data/vendor/bundle/gems/rake-12.3.3/lib/rake/default_loader.rb +15 -0
  693. data/vendor/bundle/gems/rake-12.3.3/lib/rake/dsl_definition.rb +195 -0
  694. data/vendor/bundle/gems/rake-12.3.3/lib/rake/early_time.rb +22 -0
  695. data/vendor/bundle/gems/rake-12.3.3/lib/rake/ext/core.rb +26 -0
  696. data/vendor/bundle/gems/rake-12.3.3/lib/rake/ext/string.rb +176 -0
  697. data/vendor/bundle/gems/rake-12.3.3/lib/rake/file_creation_task.rb +25 -0
  698. data/vendor/bundle/gems/rake-12.3.3/lib/rake/file_list.rb +435 -0
  699. data/vendor/bundle/gems/rake-12.3.3/lib/rake/file_task.rb +54 -0
  700. data/vendor/bundle/gems/rake-12.3.3/lib/rake/file_utils.rb +137 -0
  701. data/vendor/bundle/gems/rake-12.3.3/lib/rake/file_utils_ext.rb +145 -0
  702. data/vendor/bundle/gems/rake-12.3.3/lib/rake/invocation_chain.rb +57 -0
  703. data/vendor/bundle/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb +17 -0
  704. data/vendor/bundle/gems/rake-12.3.3/lib/rake/late_time.rb +18 -0
  705. data/vendor/bundle/gems/rake-12.3.3/lib/rake/linked_list.rb +112 -0
  706. data/vendor/bundle/gems/rake-12.3.3/lib/rake/loaders/makefile.rb +54 -0
  707. data/vendor/bundle/gems/rake-12.3.3/lib/rake/multi_task.rb +14 -0
  708. data/vendor/bundle/gems/rake-12.3.3/lib/rake/name_space.rb +38 -0
  709. data/vendor/bundle/gems/rake-12.3.3/lib/rake/packagetask.rb +207 -0
  710. data/vendor/bundle/gems/rake-12.3.3/lib/rake/phony.rb +16 -0
  711. data/vendor/bundle/gems/rake-12.3.3/lib/rake/private_reader.rb +21 -0
  712. data/vendor/bundle/gems/rake-12.3.3/lib/rake/promise.rb +100 -0
  713. data/vendor/bundle/gems/rake-12.3.3/lib/rake/pseudo_status.rb +30 -0
  714. data/vendor/bundle/gems/rake-12.3.3/lib/rake/rake_module.rb +67 -0
  715. data/vendor/bundle/gems/rake-12.3.3/lib/rake/rake_test_loader.rb +27 -0
  716. data/vendor/bundle/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb +20 -0
  717. data/vendor/bundle/gems/rake-12.3.3/lib/rake/scope.rb +43 -0
  718. data/vendor/bundle/gems/rake-12.3.3/lib/rake/task.rb +413 -0
  719. data/vendor/bundle/gems/rake-12.3.3/lib/rake/task_argument_error.rb +8 -0
  720. data/vendor/bundle/gems/rake-12.3.3/lib/rake/task_arguments.rb +109 -0
  721. data/vendor/bundle/gems/rake-12.3.3/lib/rake/task_manager.rb +324 -0
  722. data/vendor/bundle/gems/rake-12.3.3/lib/rake/tasklib.rb +12 -0
  723. data/vendor/bundle/gems/rake-12.3.3/lib/rake/testtask.rb +224 -0
  724. data/vendor/bundle/gems/rake-12.3.3/lib/rake/thread_history_display.rb +49 -0
  725. data/vendor/bundle/gems/rake-12.3.3/lib/rake/thread_pool.rb +163 -0
  726. data/vendor/bundle/gems/rake-12.3.3/lib/rake/trace_output.rb +23 -0
  727. data/vendor/bundle/gems/rake-12.3.3/lib/rake/version.rb +10 -0
  728. data/vendor/bundle/gems/rake-12.3.3/lib/rake/win32.rb +51 -0
  729. data/vendor/bundle/gems/rake-12.3.3/rake.gemspec +42 -0
  730. data/vendor/bundle/gems/rspec-3.9.0/LICENSE.md +27 -0
  731. data/vendor/bundle/gems/rspec-3.9.0/README.md +43 -0
  732. data/vendor/bundle/gems/rspec-3.9.0/lib/rspec.rb +3 -0
  733. data/vendor/bundle/gems/rspec-3.9.0/lib/rspec/version.rb +5 -0
  734. data/vendor/bundle/gems/rspec-core-3.9.1/.document +5 -0
  735. data/vendor/bundle/gems/rspec-core-3.9.1/.yardopts +8 -0
  736. data/vendor/bundle/gems/rspec-core-3.9.1/Changelog.md +2274 -0
  737. data/vendor/bundle/gems/rspec-core-3.9.1/LICENSE.md +26 -0
  738. data/vendor/bundle/gems/rspec-core-3.9.1/README.md +384 -0
  739. data/vendor/bundle/gems/rspec-core-3.9.1/exe/rspec +4 -0
  740. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/autorun.rb +3 -0
  741. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core.rb +186 -0
  742. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/backtrace_formatter.rb +65 -0
  743. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/bisect/coordinator.rb +62 -0
  744. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/bisect/example_minimizer.rb +173 -0
  745. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/bisect/fork_runner.rb +135 -0
  746. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/bisect/server.rb +61 -0
  747. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/bisect/shell_command.rb +126 -0
  748. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/bisect/shell_runner.rb +73 -0
  749. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/bisect/utilities.rb +58 -0
  750. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/configuration.rb +2336 -0
  751. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/configuration_options.rb +233 -0
  752. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/did_you_mean.rb +46 -0
  753. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/drb.rb +113 -0
  754. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/dsl.rb +98 -0
  755. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/example.rb +656 -0
  756. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/example_group.rb +889 -0
  757. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/example_status_persister.rb +235 -0
  758. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/filter_manager.rb +231 -0
  759. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/flat_map.rb +20 -0
  760. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters.rb +272 -0
  761. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
  762. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/base_formatter.rb +70 -0
  763. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/base_text_formatter.rb +75 -0
  764. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
  765. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
  766. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/console_codes.rb +68 -0
  767. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
  768. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/documentation_formatter.rb +102 -0
  769. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/exception_presenter.rb +508 -0
  770. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/failure_list_formatter.rb +23 -0
  771. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
  772. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/helpers.rb +110 -0
  773. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/html_formatter.rb +153 -0
  774. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/html_printer.rb +414 -0
  775. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/html_snippet_extractor.rb +120 -0
  776. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/json_formatter.rb +102 -0
  777. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/profile_formatter.rb +68 -0
  778. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/progress_formatter.rb +29 -0
  779. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/protocol.rb +182 -0
  780. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/snippet_extractor.rb +134 -0
  781. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
  782. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/hooks.rb +632 -0
  783. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/invocations.rb +87 -0
  784. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/memoized_helpers.rb +554 -0
  785. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/metadata.rb +498 -0
  786. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/metadata_filter.rb +255 -0
  787. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
  788. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
  789. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
  790. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/null.rb +14 -0
  791. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/rr.rb +31 -0
  792. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
  793. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/notifications.rb +521 -0
  794. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/option_parser.rb +316 -0
  795. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/ordering.rb +158 -0
  796. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/output_wrapper.rb +29 -0
  797. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/pending.rb +165 -0
  798. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/profiler.rb +34 -0
  799. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/project_initializer.rb +48 -0
  800. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/project_initializer/.rspec +1 -0
  801. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/project_initializer/spec/spec_helper.rb +100 -0
  802. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/rake_task.rb +188 -0
  803. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/reporter.rb +265 -0
  804. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/ruby_project.rb +53 -0
  805. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/runner.rb +204 -0
  806. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/sandbox.rb +37 -0
  807. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/set.rb +54 -0
  808. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/shared_context.rb +55 -0
  809. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/shared_example_group.rb +269 -0
  810. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/shell_escape.rb +49 -0
  811. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  812. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/version.rb +9 -0
  813. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/warnings.rb +40 -0
  814. data/vendor/bundle/gems/rspec-core-3.9.1/lib/rspec/core/world.rb +275 -0
  815. data/vendor/bundle/gems/rspec-expectations-3.9.0/.document +5 -0
  816. data/vendor/bundle/gems/rspec-expectations-3.9.0/.yardopts +6 -0
  817. data/vendor/bundle/gems/rspec-expectations-3.9.0/Changelog.md +1170 -0
  818. data/vendor/bundle/gems/rspec-expectations-3.9.0/LICENSE.md +25 -0
  819. data/vendor/bundle/gems/rspec-expectations-3.9.0/README.md +320 -0
  820. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations.rb +82 -0
  821. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
  822. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/configuration.rb +215 -0
  823. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/expectation_target.rb +127 -0
  824. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/fail_with.rb +39 -0
  825. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/failure_aggregator.rb +194 -0
  826. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/handler.rb +170 -0
  827. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/minitest_integration.rb +58 -0
  828. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/syntax.rb +132 -0
  829. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/version.rb +8 -0
  830. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers.rb +1038 -0
  831. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/aliased_matcher.rb +116 -0
  832. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in.rb +52 -0
  833. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/all.rb +86 -0
  834. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/base_matcher.rb +193 -0
  835. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be.rb +288 -0
  836. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_between.rb +77 -0
  837. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_instance_of.rb +26 -0
  838. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_kind_of.rb +20 -0
  839. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_within.rb +72 -0
  840. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/change.rb +428 -0
  841. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/compound.rb +276 -0
  842. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/contain_exactly.rb +302 -0
  843. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/cover.rb +24 -0
  844. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/eq.rb +40 -0
  845. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/eql.rb +34 -0
  846. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/equal.rb +81 -0
  847. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/exist.rb +90 -0
  848. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/has.rb +103 -0
  849. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  850. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/include.rb +149 -0
  851. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/match.rb +106 -0
  852. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/operators.rb +128 -0
  853. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/output.rb +200 -0
  854. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/raise_error.rb +230 -0
  855. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/respond_to.rb +174 -0
  856. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/satisfy.rb +60 -0
  857. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
  858. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
  859. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/yield.rb +432 -0
  860. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/composable.rb +171 -0
  861. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/dsl.rb +534 -0
  862. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/english_phrasing.rb +58 -0
  863. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +82 -0
  864. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/fail_matchers.rb +42 -0
  865. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/generated_descriptions.rb +41 -0
  866. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/matcher_delegator.rb +35 -0
  867. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/matcher_protocol.rb +99 -0
  868. data/vendor/bundle/gems/rspec-mocks-3.9.1/.document +5 -0
  869. data/vendor/bundle/gems/rspec-mocks-3.9.1/.yardopts +6 -0
  870. data/vendor/bundle/gems/rspec-mocks-3.9.1/Changelog.md +1133 -0
  871. data/vendor/bundle/gems/rspec-mocks-3.9.1/LICENSE.md +25 -0
  872. data/vendor/bundle/gems/rspec-mocks-3.9.1/README.md +463 -0
  873. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks.rb +130 -0
  874. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance.rb +11 -0
  875. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/chain.rb +111 -0
  876. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  877. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
  878. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
  879. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
  880. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/proxy.rb +116 -0
  881. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/recorder.rb +294 -0
  882. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
  883. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
  884. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/argument_list_matcher.rb +100 -0
  885. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/argument_matchers.rb +322 -0
  886. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/configuration.rb +212 -0
  887. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/error_generator.rb +369 -0
  888. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/example_methods.rb +434 -0
  889. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/instance_method_stasher.rb +146 -0
  890. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/marshal_extension.rb +41 -0
  891. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  892. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/have_received.rb +134 -0
  893. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/receive.rb +132 -0
  894. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
  895. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
  896. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/message_chain.rb +87 -0
  897. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/message_expectation.rb +751 -0
  898. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/method_double.rb +287 -0
  899. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/method_reference.rb +202 -0
  900. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/minitest_integration.rb +68 -0
  901. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/mutate_const.rb +339 -0
  902. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/object_reference.rb +149 -0
  903. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/order_group.rb +81 -0
  904. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/proxy.rb +503 -0
  905. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/space.rb +238 -0
  906. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/standalone.rb +3 -0
  907. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/syntax.rb +325 -0
  908. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/targets.rb +124 -0
  909. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/test_double.rb +171 -0
  910. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/verifying_double.rb +129 -0
  911. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/verifying_message_expectation.rb +54 -0
  912. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/verifying_proxy.rb +220 -0
  913. data/vendor/bundle/gems/rspec-mocks-3.9.1/lib/rspec/mocks/version.rb +9 -0
  914. data/vendor/bundle/gems/rspec-support-3.9.2/Changelog.md +292 -0
  915. data/vendor/bundle/gems/rspec-support-3.9.2/LICENSE.md +23 -0
  916. data/vendor/bundle/gems/rspec-support-3.9.2/README.md +40 -0
  917. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support.rb +149 -0
  918. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/caller_filter.rb +83 -0
  919. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/comparable_version.rb +46 -0
  920. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/differ.rb +215 -0
  921. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/directory_maker.rb +63 -0
  922. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/encoded_string.rb +161 -0
  923. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/fuzzy_matcher.rb +48 -0
  924. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/hunk_generator.rb +47 -0
  925. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/matcher_definition.rb +42 -0
  926. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/method_signature_verifier.rb +438 -0
  927. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/mutex.rb +73 -0
  928. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/object_formatter.rb +275 -0
  929. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/recursive_const_methods.rb +76 -0
  930. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/reentrant_mutex.rb +53 -0
  931. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/ruby_features.rb +185 -0
  932. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/source.rb +75 -0
  933. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/source/location.rb +21 -0
  934. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/source/node.rb +110 -0
  935. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/source/token.rb +87 -0
  936. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec.rb +81 -0
  937. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
  938. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/formatting_support.rb +9 -0
  939. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/in_sub_process.rb +69 -0
  940. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  941. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/shell_out.rb +89 -0
  942. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/stderr_splitter.rb +67 -0
  943. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/string_matcher.rb +46 -0
  944. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
  945. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  946. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/version.rb +7 -0
  947. data/vendor/bundle/gems/rspec-support-3.9.2/lib/rspec/support/warnings.rb +39 -0
  948. data/vendor/bundle/gems/unf-0.1.4/.gitignore +17 -0
  949. data/vendor/bundle/gems/unf-0.1.4/.travis.yml +17 -0
  950. data/vendor/bundle/gems/unf-0.1.4/CHANGELOG.md +46 -0
  951. data/vendor/bundle/gems/unf-0.1.4/Gemfile +4 -0
  952. data/vendor/bundle/gems/unf-0.1.4/LICENSE +24 -0
  953. data/vendor/bundle/gems/unf-0.1.4/README.md +39 -0
  954. data/vendor/bundle/gems/unf-0.1.4/Rakefile +21 -0
  955. data/vendor/bundle/gems/unf-0.1.4/lib/unf.rb +38 -0
  956. data/vendor/bundle/gems/unf-0.1.4/lib/unf/normalizer.rb +35 -0
  957. data/vendor/bundle/gems/unf-0.1.4/lib/unf/normalizer_cruby.rb +1 -0
  958. data/vendor/bundle/gems/unf-0.1.4/lib/unf/normalizer_jruby.rb +30 -0
  959. data/vendor/bundle/gems/unf-0.1.4/lib/unf/version.rb +3 -0
  960. data/vendor/bundle/gems/unf-0.1.4/test/helper.rb +18 -0
  961. data/vendor/bundle/gems/unf-0.1.4/test/normalization-test.txt +108816 -0
  962. data/vendor/bundle/gems/unf-0.1.4/test/test_unf.rb +41 -0
  963. data/vendor/bundle/gems/unf-0.1.4/unf.gemspec +35 -0
  964. data/vendor/bundle/gems/unf_ext-0.0.7.6/.document +5 -0
  965. data/vendor/bundle/gems/unf_ext-0.0.7.6/.gitignore +19 -0
  966. data/vendor/bundle/gems/unf_ext-0.0.7.6/.travis.yml +24 -0
  967. data/vendor/bundle/gems/unf_ext-0.0.7.6/CHANGELOG.md +42 -0
  968. data/vendor/bundle/gems/unf_ext-0.0.7.6/Gemfile +4 -0
  969. data/vendor/bundle/gems/unf_ext-0.0.7.6/LICENSE.txt +22 -0
  970. data/vendor/bundle/gems/unf_ext-0.0.7.6/README.md +57 -0
  971. data/vendor/bundle/gems/unf_ext-0.0.7.6/Rakefile +31 -0
  972. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/.sitearchdir.time +0 -0
  973. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/extconf.rb +50 -0
  974. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf.cc +75 -0
  975. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf.o +0 -0
  976. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/normalizer.hh +139 -0
  977. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/table.hh +13617 -0
  978. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/trie/char_stream.hh +150 -0
  979. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/trie/node.hh +25 -0
  980. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/trie/searcher.hh +194 -0
  981. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/util.hh +24 -0
  982. data/vendor/bundle/gems/unf_ext-0.0.7.6/ext/unf_ext/unf_ext.bundle +0 -0
  983. data/vendor/bundle/gems/unf_ext-0.0.7.6/lib/unf_ext.bundle +0 -0
  984. data/vendor/bundle/gems/unf_ext-0.0.7.6/lib/unf_ext.rb +5 -0
  985. data/vendor/bundle/gems/unf_ext-0.0.7.6/lib/unf_ext/version.rb +5 -0
  986. data/vendor/bundle/gems/unf_ext-0.0.7.6/test/helper.rb +18 -0
  987. data/vendor/bundle/gems/unf_ext-0.0.7.6/test/normalization-test.txt +112332 -0
  988. data/vendor/bundle/gems/unf_ext-0.0.7.6/test/test_unf_ext.rb +41 -0
  989. data/vendor/bundle/gems/unf_ext-0.0.7.6/unf_ext.gemspec +42 -0
  990. data/vendor/bundle/gems/webrobots-0.1.2/.document +4 -0
  991. data/vendor/bundle/gems/webrobots-0.1.2/.gitignore +11 -0
  992. data/vendor/bundle/gems/webrobots-0.1.2/.travis.yml +17 -0
  993. data/vendor/bundle/gems/webrobots-0.1.2/Gemfile +4 -0
  994. data/vendor/bundle/gems/webrobots-0.1.2/LICENSE.txt +24 -0
  995. data/vendor/bundle/gems/webrobots-0.1.2/README.rdoc +38 -0
  996. data/vendor/bundle/gems/webrobots-0.1.2/Rakefile +29 -0
  997. data/vendor/bundle/gems/webrobots-0.1.2/lib/webrobots.rb +213 -0
  998. data/vendor/bundle/gems/webrobots-0.1.2/lib/webrobots/nokogiri.rb +32 -0
  999. data/vendor/bundle/gems/webrobots-0.1.2/lib/webrobots/robotstxt.rb +752 -0
  1000. data/vendor/bundle/gems/webrobots-0.1.2/lib/webrobots/robotstxt.ry +487 -0
  1001. data/vendor/bundle/gems/webrobots-0.1.2/lib/webrobots/version.rb +3 -0
  1002. data/vendor/bundle/gems/webrobots-0.1.2/test/helper.rb +25 -0
  1003. data/vendor/bundle/gems/webrobots-0.1.2/test/simplecov_start.rb +9 -0
  1004. data/vendor/bundle/gems/webrobots-0.1.2/test/test_webrobots.rb +806 -0
  1005. data/vendor/bundle/gems/webrobots-0.1.2/test/vcr_cassettes/major_sites.yml +2006 -0
  1006. data/vendor/bundle/gems/webrobots-0.1.2/webrobots.gemspec +46 -0
  1007. data/vendor/bundle/specifications/connection_pool-2.2.2.gemspec +38 -0
  1008. data/vendor/bundle/specifications/diff-lcs-1.3.gemspec +61 -0
  1009. data/vendor/bundle/specifications/domain_name-0.5.20190701.gemspec +46 -0
  1010. data/vendor/bundle/specifications/http-cookie-1.0.3.gemspec +52 -0
  1011. data/vendor/bundle/specifications/mechanize-2.7.6.gemspec +69 -0
  1012. data/vendor/bundle/specifications/mime-types-3.3.1.gemspec +85 -0
  1013. data/vendor/bundle/specifications/mime-types-data-3.2019.1009.gemspec +60 -0
  1014. data/vendor/bundle/specifications/mini_portile2-2.4.0.gemspec +48 -0
  1015. data/vendor/bundle/specifications/net-http-digest_auth-1.4.1.gemspec +43 -0
  1016. data/vendor/bundle/specifications/net-http-persistent-3.1.0.gemspec +52 -0
  1017. data/vendor/bundle/specifications/nokogiri-1.10.7.gemspec +85 -0
  1018. data/vendor/bundle/specifications/ntlm-http-0.1.1.gemspec +24 -0
  1019. data/vendor/bundle/specifications/rake-12.3.3.gemspec +49 -0
  1020. data/vendor/bundle/specifications/rspec-3.9.0.gemspec +43 -0
  1021. data/vendor/bundle/specifications/rspec-core-3.9.1.gemspec +63 -0
  1022. data/vendor/bundle/specifications/rspec-expectations-3.9.0.gemspec +51 -0
  1023. data/vendor/bundle/specifications/rspec-mocks-3.9.1.gemspec +51 -0
  1024. data/vendor/bundle/specifications/rspec-support-3.9.2.gemspec +39 -0
  1025. data/vendor/bundle/specifications/unf-0.1.4.gemspec +46 -0
  1026. data/vendor/bundle/specifications/unf_ext-0.0.7.6.gemspec +51 -0
  1027. data/vendor/bundle/specifications/webrobots-0.1.2.gemspec +65 -0
  1028. metadata +1100 -0
@@ -0,0 +1,41 @@
1
+ require 'rubygems'
2
+
3
+ begin
4
+ require "bundler/gem_tasks"
5
+ rescue LoadError
6
+ end
7
+
8
+ require 'rdoc/task'
9
+ require 'rake/testtask'
10
+
11
+ task :prerelease => [:clobber_rdoc, :test]
12
+
13
+ desc "Update SSL Certificate"
14
+ task('ssl_cert') do |p|
15
+ sh "openssl genrsa -des3 -out server.key 1024"
16
+ sh "openssl req -new -key server.key -out server.csr"
17
+ sh "cp server.key server.key.org"
18
+ sh "openssl rsa -in server.key.org -out server.key"
19
+ sh "openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt"
20
+ sh "cp server.key server.pem"
21
+ sh "mv server.key server.csr server.crt server.pem test/data/"
22
+ sh "rm server.key.org"
23
+ end
24
+
25
+ RDoc::Task.new do |rdoc|
26
+ rdoc.main = "README.rdoc"
27
+ rdoc.rdoc_dir = 'doc'
28
+ rdoc.rdoc_files.include( "CHANGELOG.rdoc", "EXAMPLES.rdoc", "GUIDE.rdoc", "LICENSE.rdoc", "README.rdoc", "lib/**/*.rb")
29
+ end
30
+
31
+ desc "Run tests"
32
+ Rake::TestTask.new { |t|
33
+ t.test_files = Dir['test/**/test*.rb']
34
+ t.verbose = true
35
+ }
36
+
37
+ task publish_docs: %w[rdoc] do
38
+ sh 'rsync', '-avzO', '--delete', 'doc/', 'docs-push.seattlerb.org:/data/www/docs.seattlerb.org/mechanize/'
39
+ end
40
+
41
+ task default: :test
@@ -0,0 +1,22 @@
1
+ require 'rubygems'
2
+ require 'mechanize'
3
+
4
+ agent = Mechanize.new
5
+
6
+ # Get the flickr sign in page
7
+ page = agent.get 'http://flickr.com/signin/flickr/'
8
+
9
+ # Fill out the login form
10
+ form = page.form_with :name => 'flickrloginform'
11
+ form.email = ARGV[0]
12
+ form.password = ARGV[1]
13
+ form.submit
14
+
15
+ # Go to the upload page
16
+ page = page.link_with(:text => 'Upload').click
17
+
18
+ # Fill out the form
19
+ form = page.forms.action('/photos_upload_process.gne').first
20
+ form.file_uploads.name('file1').first.file_name = ARGV[2]
21
+ form.submit
22
+
@@ -0,0 +1,5 @@
1
+ require 'rubygems'
2
+ require 'mechanize'
3
+
4
+ agent = Mechanize.new
5
+ puts agent.get(ARGV[0]).inspect
@@ -0,0 +1,7 @@
1
+ require 'rubygems'
2
+ require 'mechanize'
3
+
4
+ agent = Mechanize.new
5
+ agent.set_proxy('localhost', '8000')
6
+ page = agent.get(ARGV[0])
7
+ puts page.body
@@ -0,0 +1,23 @@
1
+ # This example logs a user in to rubyforge and prints out the body of the
2
+ # page after logging the user in.
3
+ require 'rubygems'
4
+ require 'mechanize'
5
+ require 'logger'
6
+
7
+ # Create a new mechanize object
8
+ mech = Mechanize.new
9
+ mech.log = Logger.new $stderr
10
+ mech.agent.http.debug_output = $stderr
11
+
12
+ # Load the rubyforge website
13
+ page = mech.get('https://rubygems.org/')
14
+ page = mech.click page.link_with(:text => /Sign in/) # Click the login link
15
+ form = page.forms[1] # Select the first form
16
+ form["session[who]"] = ARGV[0]
17
+ form["session[password]"] = ARGV[1]
18
+ form["commit"] = "Sign in"
19
+
20
+ # Submit the form
21
+ page = form.submit form.buttons.first
22
+
23
+ puts page.body # Print out the body
@@ -0,0 +1,22 @@
1
+ require 'rubygems'
2
+ require 'mechanize'
3
+
4
+ agent = Mechanize.new
5
+ agent.max_history = nil # unlimited history
6
+ stack = agent.get(ARGV[0]).links
7
+
8
+ while l = stack.pop
9
+ next unless l.uri
10
+ host = l.uri.host
11
+ next unless host.nil? or host == agent.history.first.uri.host
12
+ next if agent.visited? l.href
13
+
14
+ puts "crawling #{l.uri}"
15
+ begin
16
+ page = l.click
17
+ next unless Mechanize::Page === page
18
+ stack.push(*page.links)
19
+ rescue Mechanize::ResponseCodeError
20
+ end
21
+ end
22
+
@@ -0,0 +1,159 @@
1
+ require 'mechanize'
2
+ require 'tsort'
3
+
4
+ ##
5
+ # This example implements the alt-text of http://xkcd.com/903/ which states:
6
+ #
7
+ # Wikipedia trivia: if you take any article, click on the first link in the
8
+ # article text not in parentheses or italics, and then repeat, you will
9
+ # eventually end up at "Philosophy".
10
+
11
+ class WikipediaLinksToPhilosophy
12
+
13
+ def initialize
14
+ @agent = Mechanize.new
15
+ @agent.user_agent_alias = 'Mac Safari' # Wikipedia blocks "mechanize"
16
+
17
+ @history = @agent.history
18
+
19
+ @wiki_url = URI 'http://en.wikipedia.org'
20
+ @search_url = @wiki_url + '/w/index.php'
21
+ @random_url = @wiki_url + '/wiki/Special:Random'
22
+
23
+ @title = nil
24
+ @seen = nil
25
+ end
26
+
27
+ ##
28
+ # Retrieves the title of the current page
29
+
30
+ def extract_title
31
+ @page.title =~ /(.*) - Wikipedia/
32
+
33
+ @title = $1
34
+ end
35
+
36
+ ##
37
+ # Retrieves the initial page. If +query+ is not given a random page is
38
+ # chosen
39
+
40
+ def fetch_first_page query
41
+ if query then
42
+ search query
43
+ else
44
+ random
45
+ end
46
+ end
47
+
48
+ ##
49
+ # The search is finished if we've seen the page before or we've reached
50
+ # Philosophy
51
+
52
+ def finished?
53
+ @seen or @title == 'Philosophy'
54
+ end
55
+
56
+ ##
57
+ # Follows the first non-parenthetical, non-italic link in the main body of
58
+ # the article.
59
+
60
+ def follow_first_link
61
+ puts @title
62
+
63
+ # > p > a rejects italics
64
+ links = @page.root.css('.mw-content-ltr > p > a[href^="/wiki/"]')
65
+
66
+ # reject disambiguation and special pages, images and files
67
+ links = links.reject do |link_node|
68
+ link_node['href'] =~ %r%/wiki/\w+:|\(disambiguation\)%
69
+ end
70
+
71
+ links = links.reject do |link_node|
72
+ in_parenthetical? link_node
73
+ end
74
+
75
+ link = links.first
76
+
77
+ unless link then
78
+ # disambiguation page? try the first item in the list
79
+ link =
80
+ @page.root.css('.mw-content-ltr > ul > li > a[href^="/wiki/"]').first
81
+ end
82
+
83
+ # convert a Nokogiri HTML element back to a mechanize link
84
+ link = Mechanize::Page::Link.new link, @agent, @page
85
+
86
+ return if @seen = @agent.visited?(link)
87
+
88
+ @page = link.click
89
+
90
+ extract_title
91
+ end
92
+
93
+ ##
94
+ # Is +link_node+ in an open parenthetical section?
95
+
96
+ def in_parenthetical? link_node
97
+ siblings = link_node.parent.children
98
+
99
+ seen = false
100
+
101
+ before = siblings.reject do |node|
102
+ seen or (seen = node == link_node)
103
+ end
104
+
105
+ preceding_text = before.map { |node| node.text }.join
106
+
107
+ open = preceding_text.count '('
108
+ close = preceding_text.count ')'
109
+
110
+ open > close
111
+ end
112
+
113
+ ##
114
+ # Prints the result of the search
115
+
116
+ def print_result
117
+ if @seen then
118
+ puts "[Loop detected]"
119
+ else
120
+ puts @title
121
+ end
122
+ puts
123
+ # subtract initial search or Special:Random
124
+ puts "After #{@agent.history.length - 1} pages"
125
+ end
126
+
127
+ ##
128
+ # Retrieves a random page from wikipedia
129
+
130
+ def random
131
+ @page = @agent.get @random_url
132
+
133
+ extract_title
134
+ end
135
+
136
+ ##
137
+ # Entry point
138
+
139
+ def run query = nil
140
+ fetch_first_page query
141
+
142
+ follow_first_link until finished?
143
+
144
+ print_result
145
+ end
146
+
147
+ ##
148
+ # Searches for +query+ on wikipedia
149
+
150
+ def search query
151
+ @page = @agent.get @search_url, search: query
152
+
153
+ extract_title
154
+ end
155
+
156
+ end
157
+
158
+ WikipediaLinksToPhilosophy.new.run ARGV.shift if $0 == __FILE__
159
+
@@ -0,0 +1,1369 @@
1
+ require 'mechanize/version'
2
+ require 'fileutils'
3
+ require 'forwardable'
4
+ require 'mutex_m'
5
+ require 'net/http/digest_auth'
6
+ require 'net/http/persistent'
7
+ require 'nokogiri'
8
+ require 'openssl'
9
+ require 'pp'
10
+ require 'stringio'
11
+ require 'uri'
12
+ require 'webrick/httputils'
13
+ require 'zlib'
14
+
15
+ ##
16
+ # The Mechanize library is used for automating interactions with a website. It
17
+ # can follow links and submit forms. Form fields can be populated and
18
+ # submitted. A history of URLs is maintained and can be queried.
19
+ #
20
+ # == Example
21
+ #
22
+ # require 'mechanize'
23
+ # require 'logger'
24
+ #
25
+ # agent = Mechanize.new
26
+ # agent.log = Logger.new "mech.log"
27
+ # agent.user_agent_alias = 'Mac Safari'
28
+ #
29
+ # page = agent.get "http://www.google.com/"
30
+ # search_form = page.form_with :name => "f"
31
+ # search_form.field_with(:name => "q").value = "Hello"
32
+ #
33
+ # search_results = agent.submit search_form
34
+ # puts search_results.body
35
+ #
36
+ # == Issues with mechanize
37
+ #
38
+ # If you think you have a bug with mechanize, but aren't sure, please file a
39
+ # ticket at https://github.com/sparklemotion/mechanize/issues
40
+ #
41
+ # Here are some common problems you may experience with mechanize
42
+ #
43
+ # === Problems connecting to SSL sites
44
+ #
45
+ # Mechanize defaults to validating SSL certificates using the default CA
46
+ # certificates for your platform. At this time, Windows users do not have
47
+ # integration between the OS default CA certificates and OpenSSL. #cert_store
48
+ # explains how to download and use Mozilla's CA certificates to allow SSL
49
+ # sites to work.
50
+ #
51
+ # === Problems with content-length
52
+ #
53
+ # Some sites return an incorrect content-length value. Unlike a browser,
54
+ # mechanize raises an error when the content-length header does not match the
55
+ # response length since it does not know if there was a connection problem or
56
+ # if the mismatch is a server bug.
57
+ #
58
+ # The error raised, Mechanize::ResponseReadError, can be converted to a parsed
59
+ # Page, File, etc. depending upon the content-type:
60
+ #
61
+ # agent = Mechanize.new
62
+ # uri = URI 'http://example/invalid_content_length'
63
+ #
64
+ # begin
65
+ # page = agent.get uri
66
+ # rescue Mechanize::ResponseReadError => e
67
+ # page = e.force_parse
68
+ # end
69
+
70
+ class Mechanize
71
+
72
+ ##
73
+ # Base mechanize error class
74
+
75
+ class Error < RuntimeError
76
+ end
77
+
78
+ ruby_version = if RUBY_PATCHLEVEL >= 0 then
79
+ "#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
80
+ else
81
+ "#{RUBY_VERSION}dev#{RUBY_REVISION}"
82
+ end
83
+
84
+ ##
85
+ # Supported User-Agent aliases for use with user_agent_alias=. The
86
+ # description in parenthesis is for informative purposes and is not part of
87
+ # the alias name.
88
+ #
89
+ # * Linux Firefox (43.0 on Ubuntu Linux)
90
+ # * Linux Konqueror (3)
91
+ # * Linux Mozilla
92
+ # * Mac Firefox (43.0)
93
+ # * Mac Mozilla
94
+ # * Mac Safari (9.0 on OS X 10.11.2)
95
+ # * Mac Safari 4
96
+ # * Mechanize (default)
97
+ # * Windows IE 6
98
+ # * Windows IE 7
99
+ # * Windows IE 8
100
+ # * Windows IE 9
101
+ # * Windows IE 10 (Windows 8 64bit)
102
+ # * Windows IE 11 (Windows 8.1 64bit)
103
+ # * Windows Edge
104
+ # * Windows Mozilla
105
+ # * Windows Firefox (43.0)
106
+ # * iPhone (iOS 9.1)
107
+ # * iPad (iOS 9.1)
108
+ # * Android (5.1.1)
109
+ #
110
+ # Example:
111
+ #
112
+ # agent = Mechanize.new
113
+ # agent.user_agent_alias = 'Mac Safari'
114
+
115
+ AGENT_ALIASES = {
116
+ 'Mechanize' => "Mechanize/#{VERSION} Ruby/#{ruby_version} (http://github.com/sparklemotion/mechanize/)",
117
+ 'Linux Firefox' => 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0',
118
+ 'Linux Konqueror' => 'Mozilla/5.0 (compatible; Konqueror/3; Linux)',
119
+ 'Linux Mozilla' => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624',
120
+ 'Mac Firefox' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0',
121
+ 'Mac Mozilla' => 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.4a) Gecko/20030401',
122
+ 'Mac Safari 4' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; de-at) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10',
123
+ 'Mac Safari' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9',
124
+ 'Windows Chrome' => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.125 Safari/537.36',
125
+ 'Windows IE 6' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
126
+ 'Windows IE 7' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)',
127
+ 'Windows IE 8' => 'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)',
128
+ 'Windows IE 9' => 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
129
+ 'Windows IE 10' => 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)',
130
+ 'Windows IE 11' => 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko',
131
+ 'Windows Edge' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586',
132
+ 'Windows Mozilla' => 'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6',
133
+ 'Windows Firefox' => 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0',
134
+ 'iPhone' => 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B5110e Safari/601.1',
135
+ 'iPad' => 'Mozilla/5.0 (iPad; CPU OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1',
136
+ 'Android' => 'Mozilla/5.0 (Linux; Android 5.1.1; Nexus 7 Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.76 Safari/537.36',
137
+ }
138
+
139
+ AGENT_ALIASES.default_proc = proc { |hash, key|
140
+ case key
141
+ when /FireFox/
142
+ if ua = hash[nkey = key.sub(/FireFox/, 'Firefox')]
143
+ warn "Mechanize#user_agent_alias: #{key.inspect} should be spelled as #{nkey.inspect}"
144
+ ua
145
+ end
146
+ end
147
+ }
148
+
149
+ def self.inherited(child) # :nodoc:
150
+ child.html_parser = html_parser
151
+ child.log = log
152
+ super
153
+ end
154
+
155
+ ##
156
+ # Creates a new Mechanize instance and yields it to the given block.
157
+ #
158
+ # After the block executes, the instance is cleaned up. This includes
159
+ # closing all open connections.
160
+ #
161
+ # Mechanize.start do |m|
162
+ # m.get("http://example.com")
163
+ # end
164
+
165
+ def self.start
166
+ instance = new
167
+ yield(instance)
168
+ ensure
169
+ instance.shutdown
170
+ end
171
+
172
+ ##
173
+ # Creates a new mechanize instance. If a block is given, the created
174
+ # instance is yielded to the block for setting up pre-connection state such
175
+ # as SSL parameters or proxies:
176
+ #
177
+ # agent = Mechanize.new do |a|
178
+ # a.proxy_host = 'proxy.example'
179
+ # a.proxy_port = 8080
180
+ # end
181
+ #
182
+ # If you need segregated SSL connections give each agent a unique
183
+ # name. Otherwise the connections will be shared. This is
184
+ # particularly important if you are using certifcates.
185
+ #
186
+ # agent_1 = Mechanize.new 'conn1'
187
+ # agent_2 = Mechanize.new 'conn2'
188
+ #
189
+
190
+ def initialize(connection_name = 'mechanize')
191
+ @agent = Mechanize::HTTP::Agent.new(connection_name)
192
+ @agent.context = self
193
+ @log = nil
194
+
195
+ # attr_accessors
196
+ @agent.user_agent = AGENT_ALIASES['Mechanize']
197
+ @watch_for_set = nil
198
+ @history_added = nil
199
+
200
+ # attr_readers
201
+ @pluggable_parser = PluggableParser.new
202
+
203
+ @keep_alive_time = 0
204
+
205
+ # Proxy
206
+ @proxy_addr = nil
207
+ @proxy_port = nil
208
+ @proxy_user = nil
209
+ @proxy_pass = nil
210
+
211
+ @html_parser = self.class.html_parser
212
+
213
+ @default_encoding = nil
214
+ @force_default_encoding = false
215
+
216
+ # defaults
217
+ @agent.max_history = 50
218
+
219
+ yield self if block_given?
220
+
221
+ @agent.set_proxy @proxy_addr, @proxy_port, @proxy_user, @proxy_pass
222
+ end
223
+
224
+ # :section: History
225
+ #
226
+ # Methods for navigating and controlling history
227
+
228
+ ##
229
+ # Equivalent to the browser back button. Returns the previous page visited.
230
+
231
+ def back
232
+ @agent.history.pop
233
+ end
234
+
235
+ ##
236
+ # Returns the latest page loaded by Mechanize
237
+
238
+ def current_page
239
+ @agent.current_page
240
+ end
241
+
242
+ alias page current_page
243
+
244
+ ##
245
+ # The history of this mechanize run
246
+
247
+ def history
248
+ @agent.history
249
+ end
250
+
251
+ ##
252
+ # Maximum number of items allowed in the history. The default setting is 50
253
+ # pages. Note that the size of the history multiplied by the maximum
254
+ # response body size
255
+
256
+ def max_history
257
+ @agent.history.max_size
258
+ end
259
+
260
+ ##
261
+ # Sets the maximum number of items allowed in the history to +length+.
262
+ #
263
+ # Setting the maximum history length to nil will make the history size
264
+ # unlimited. Take care when doing this, mechanize stores response bodies in
265
+ # memory for pages and in the temporary files directory for other responses.
266
+ # For a long-running mechanize program this can be quite large.
267
+ #
268
+ # See also the discussion under #max_file_buffer=
269
+
270
+ def max_history= length
271
+ @agent.history.max_size = length
272
+ end
273
+
274
+ ##
275
+ # Returns a visited page for the +url+ passed in, otherwise nil
276
+
277
+ def visited? url
278
+ url = url.href if url.respond_to? :href
279
+
280
+ @agent.visited_page url
281
+ end
282
+
283
+ ##
284
+ # Returns whether or not a url has been visited
285
+
286
+ alias visited_page visited?
287
+
288
+ # :section: Hooks
289
+ #
290
+ # Hooks into the operation of mechanize
291
+
292
+ ##
293
+ # A list of hooks to call before reading response header 'content-encoding'.
294
+ #
295
+ # The hook is called with the agent making the request, the URI of the
296
+ # request, the response an IO containing the response body.
297
+
298
+ def content_encoding_hooks
299
+ @agent.content_encoding_hooks
300
+ end
301
+
302
+ ##
303
+ # Callback which is invoked with the page that was added to history.
304
+
305
+ attr_accessor :history_added
306
+
307
+ ##
308
+ # A list of hooks to call after retrieving a response. Hooks are called with
309
+ # the agent, the URI, the response, and the response body.
310
+
311
+ def post_connect_hooks
312
+ @agent.post_connect_hooks
313
+ end
314
+
315
+ ##
316
+ # A list of hooks to call before retrieving a response. Hooks are called
317
+ # with the agent, the URI, the response, and the response body.
318
+
319
+ def pre_connect_hooks
320
+ @agent.pre_connect_hooks
321
+ end
322
+
323
+ # :section: Requests
324
+ #
325
+ # Methods for making HTTP requests
326
+
327
+ ##
328
+ # If the parameter is a string, finds the button or link with the
329
+ # value of the string on the current page and clicks it. Otherwise, clicks
330
+ # the Mechanize::Page::Link object passed in. Returns the page fetched.
331
+
332
+ def click link
333
+ case link
334
+ when Page::Link then
335
+ referer = link.page || current_page()
336
+ if @agent.robots
337
+ if (referer.is_a?(Page) and referer.parser.nofollow?) or
338
+ link.rel?('nofollow') then
339
+ raise RobotsDisallowedError.new(link.href)
340
+ end
341
+ end
342
+ if link.noreferrer?
343
+ href = @agent.resolve(link.href, link.page || current_page)
344
+ referer = Page.new
345
+ else
346
+ href = link.href
347
+ end
348
+ get href, [], referer
349
+ when String, Regexp then
350
+ if real_link = page.link_with(:text => link)
351
+ click real_link
352
+ else
353
+ button = nil
354
+ # Note that this will not work if we have since navigated to a different page.
355
+ # Should rather make each button aware of its parent form.
356
+ form = page.forms.find do |f|
357
+ button = f.button_with(:value => link)
358
+ button.is_a? Form::Submit
359
+ end
360
+ submit form, button if form
361
+ end
362
+ when Form::Submit, Form::ImageButton then
363
+ # Note that this will not work if we have since navigated to a different page.
364
+ # Should rather make each button aware of its parent form.
365
+ form = page.forms.find do |f|
366
+ f.buttons.include?(link)
367
+ end
368
+ submit form, link if form
369
+ else
370
+ referer = current_page()
371
+ href = link.respond_to?(:href) ? link.href :
372
+ (link['href'] || link['src'])
373
+ get href, [], referer
374
+ end
375
+ end
376
+
377
+ ##
378
+ # GETs +uri+ and writes it to +io_or_filename+ without recording the request
379
+ # in the history. If +io_or_filename+ does not respond to #write it will be
380
+ # used as a file name. +parameters+, +referer+ and +headers+ are used as in
381
+ # #get.
382
+ #
383
+ # By default, if the Content-type of the response matches a Mechanize::File
384
+ # or Mechanize::Page parser, the response body will be loaded into memory
385
+ # before being saved. See #pluggable_parser for details on changing this
386
+ # default.
387
+ #
388
+ # For alternate ways of downloading files see Mechanize::FileSaver and
389
+ # Mechanize::DirectorySaver.
390
+
391
+ def download uri, io_or_filename, parameters = [], referer = nil, headers = {}
392
+ page = transact do
393
+ get uri, parameters, referer, headers
394
+ end
395
+
396
+ io = if io_or_filename.respond_to? :write then
397
+ io_or_filename
398
+ else
399
+ open io_or_filename, 'wb'
400
+ end
401
+
402
+ case page
403
+ when Mechanize::File then
404
+ io.write page.body
405
+ else
406
+ body_io = page.body_io
407
+
408
+ until body_io.eof? do
409
+ io.write body_io.read 16384
410
+ end
411
+ end
412
+
413
+ page
414
+ ensure
415
+ io.close if io and not io_or_filename.respond_to? :write
416
+ end
417
+
418
+ ##
419
+ # DELETE +uri+ with +query_params+, and setting +headers+:
420
+ #
421
+ # +query_params+ is formatted into a query string using
422
+ # Mechanize::Util.build_query_string, which see.
423
+ #
424
+ # delete('http://example/', {'q' => 'foo'}, {})
425
+
426
+ def delete(uri, query_params = {}, headers = {})
427
+ page = @agent.fetch(uri, :delete, headers, query_params)
428
+ add_to_history(page)
429
+ page
430
+ end
431
+
432
+ ##
433
+ # GET the +uri+ with the given request +parameters+, +referer+ and
434
+ # +headers+.
435
+ #
436
+ # The +referer+ may be a URI or a page.
437
+ #
438
+ # +parameters+ is formatted into a query string using
439
+ # Mechanize::Util.build_query_string, which see.
440
+
441
+ def get(uri, parameters = [], referer = nil, headers = {})
442
+ method = :get
443
+
444
+ referer ||=
445
+ if uri.to_s =~ %r{\Ahttps?://}
446
+ Page.new
447
+ else
448
+ current_page || Page.new
449
+ end
450
+
451
+ # FIXME: Huge hack so that using a URI as a referer works. I need to
452
+ # refactor everything to pass around URIs but still support
453
+ # Mechanize::Page#base
454
+ unless Mechanize::Parser === referer then
455
+ referer = if referer.is_a?(String) then
456
+ Page.new URI(referer)
457
+ else
458
+ Page.new referer
459
+ end
460
+ end
461
+
462
+ # fetch the page
463
+ headers ||= {}
464
+ page = @agent.fetch uri, method, headers, parameters, referer
465
+ add_to_history(page)
466
+ yield page if block_given?
467
+ page
468
+ end
469
+
470
+ ##
471
+ # GET +url+ and return only its contents
472
+
473
+ def get_file(url)
474
+ get(url).body
475
+ end
476
+
477
+ ##
478
+ # HEAD +uri+ with +query_params+ and +headers+:
479
+ #
480
+ # +query_params+ is formatted into a query string using
481
+ # Mechanize::Util.build_query_string, which see.
482
+ #
483
+ # head('http://example/', {'q' => 'foo'}, {})
484
+
485
+ def head(uri, query_params = {}, headers = {})
486
+ page = @agent.fetch uri, :head, headers, query_params
487
+
488
+ yield page if block_given?
489
+
490
+ page
491
+ end
492
+
493
+ ##
494
+ # POST to the given +uri+ with the given +query+.
495
+ #
496
+ # +query+ is processed using Mechanize::Util.each_parameter (which
497
+ # see), and then encoded into an entity body. If any IO/FileUpload
498
+ # object is specified as a field value the "enctype" will be
499
+ # multipart/form-data, or application/x-www-form-urlencoded
500
+ # otherwise.
501
+ #
502
+ # Examples:
503
+ # agent.post 'http://example.com/', "foo" => "bar"
504
+ #
505
+ # agent.post 'http://example.com/', [%w[foo bar]]
506
+ #
507
+ # agent.post('http://example.com/', "<message>hello</message>",
508
+ # 'Content-Type' => 'application/xml')
509
+
510
+ def post(uri, query = {}, headers = {})
511
+ return request_with_entity(:post, uri, query, headers) if String === query
512
+
513
+ node = {}
514
+ # Create a fake form
515
+ class << node
516
+ def search(*args); []; end
517
+ end
518
+ node['method'] = 'POST'
519
+ node['enctype'] = 'application/x-www-form-urlencoded'
520
+
521
+ form = Form.new(node)
522
+
523
+ Mechanize::Util.each_parameter(query) { |k, v|
524
+ if v.is_a?(IO)
525
+ form.enctype = 'multipart/form-data'
526
+ ul = Form::FileUpload.new({'name' => k.to_s},::File.basename(v.path))
527
+ ul.file_data = v.read
528
+ form.file_uploads << ul
529
+ elsif v.is_a?(Form::FileUpload)
530
+ form.enctype = 'multipart/form-data'
531
+ form.file_uploads << v
532
+ else
533
+ form.fields << Form::Field.new({'name' => k.to_s},v)
534
+ end
535
+ }
536
+ post_form(uri, form, headers)
537
+ end
538
+
539
+ ##
540
+ # PUT to +uri+ with +entity+, and setting +headers+:
541
+ #
542
+ # put('http://example/', 'new content', {'Content-Type' => 'text/plain'})
543
+
544
+ def put(uri, entity, headers = {})
545
+ request_with_entity(:put, uri, entity, headers)
546
+ end
547
+
548
+ ##
549
+ # Makes an HTTP request to +url+ using HTTP method +verb+. +entity+ is used
550
+ # as the request body, if allowed.
551
+
552
+ def request_with_entity(verb, uri, entity, headers = {})
553
+ cur_page = current_page || Page.new
554
+
555
+ log.debug("query: #{ entity.inspect }") if log
556
+
557
+ headers = {
558
+ 'Content-Type' => 'application/octet-stream',
559
+ 'Content-Length' => entity.size.to_s,
560
+ }.update headers
561
+
562
+ page = @agent.fetch uri, verb, headers, [entity], cur_page
563
+ add_to_history(page)
564
+ page
565
+ end
566
+
567
+ ##
568
+ # Submits +form+ with an optional +button+.
569
+ #
570
+ # Without a button:
571
+ #
572
+ # page = agent.get('http://example.com')
573
+ # agent.submit(page.forms.first)
574
+ #
575
+ # With a button:
576
+ #
577
+ # agent.submit(page.forms.first, page.forms.first.buttons.first)
578
+
579
+ def submit(form, button = nil, headers = {})
580
+ form.add_button_to_query(button) if button
581
+
582
+ case form.method.upcase
583
+ when 'POST'
584
+ post_form(form.action, form, headers)
585
+ when 'GET'
586
+ get(form.action.gsub(/\?[^\?]*$/, ''),
587
+ form.build_query,
588
+ form.page,
589
+ headers)
590
+ else
591
+ raise ArgumentError, "unsupported method: #{form.method.upcase}"
592
+ end
593
+ end
594
+
595
+ ##
596
+ # Runs given block, then resets the page history as it was before. self is
597
+ # given as a parameter to the block. Returns the value of the block.
598
+
599
+ def transact
600
+ history_backup = @agent.history.dup
601
+ begin
602
+ yield self
603
+ ensure
604
+ @agent.history = history_backup
605
+ end
606
+ end
607
+
608
+ # :section: Settings
609
+ #
610
+ # Settings that adjust how mechanize makes HTTP requests including timeouts,
611
+ # keep-alives, compression, redirects and headers.
612
+
613
+ @html_parser = Nokogiri::HTML
614
+ @log = nil
615
+
616
+ class << self
617
+
618
+ ##
619
+ # Default HTML parser for all mechanize instances
620
+ #
621
+ # Mechanize.html_parser = Nokogiri::XML
622
+
623
+ attr_accessor :html_parser
624
+
625
+ ##
626
+ # Default logger for all mechanize instances
627
+ #
628
+ # Mechanize.log = Logger.new $stderr
629
+
630
+ attr_accessor :log
631
+
632
+ end
633
+
634
+ ##
635
+ # A default encoding name used when parsing HTML parsing. When set it is
636
+ # used after any other encoding. The default is nil.
637
+
638
+ attr_accessor :default_encoding
639
+
640
+ ##
641
+ # Overrides the encodings given by the HTTP server and the HTML page with
642
+ # the default_encoding when set to true.
643
+
644
+ attr_accessor :force_default_encoding
645
+
646
+ ##
647
+ # The HTML parser to be used when parsing documents
648
+
649
+ attr_accessor :html_parser
650
+
651
+ ##
652
+ # HTTP/1.0 keep-alive time. This is no longer supported by mechanize as it
653
+ # now uses net-http-persistent which only supports HTTP/1.1 persistent
654
+ # connections
655
+
656
+ attr_accessor :keep_alive_time
657
+
658
+ ##
659
+ # The pluggable parser maps a response Content-Type to a parser class. The
660
+ # registered Content-Type may be either a full content type like 'image/png'
661
+ # or a media type 'text'. See Mechanize::PluggableParser for further
662
+ # details.
663
+ #
664
+ # Example:
665
+ #
666
+ # agent.pluggable_parser['application/octet-stream'] = Mechanize::Download
667
+
668
+ attr_reader :pluggable_parser
669
+
670
+ ##
671
+ # The HTTP proxy address
672
+
673
+ attr_reader :proxy_addr
674
+
675
+ ##
676
+ # The HTTP proxy password
677
+
678
+ attr_reader :proxy_pass
679
+
680
+ ##
681
+ # The HTTP proxy port
682
+
683
+ attr_reader :proxy_port
684
+
685
+ ##
686
+ # The HTTP proxy username
687
+
688
+ attr_reader :proxy_user
689
+
690
+ ##
691
+ # *NOTE*: These credentials will be used as a default for any challenge
692
+ # exposing your password to disclosure to malicious servers. Use of this
693
+ # method will warn. This method is deprecated and will be removed in
694
+ # mechanize 3.
695
+ #
696
+ # Sets the +user+ and +password+ as the default credentials to be used for
697
+ # HTTP authentication for any server. The +domain+ is used for NTLM
698
+ # authentication.
699
+
700
+ def auth user, password, domain = nil
701
+ caller.first =~ /(.*?):(\d+).*?$/
702
+
703
+ warn <<-WARNING
704
+ At #{$1} line #{$2}
705
+
706
+ Use of #auth and #basic_auth are deprecated due to a security vulnerability.
707
+
708
+ WARNING
709
+
710
+ @agent.add_default_auth user, password, domain
711
+ end
712
+
713
+ alias basic_auth auth
714
+
715
+ ##
716
+ # Adds credentials +user+, +pass+ for +uri+. If +realm+ is set the
717
+ # credentials are used only for that realm. If +realm+ is not set the
718
+ # credentials become the default for any realm on that URI.
719
+ #
720
+ # +domain+ and +realm+ are exclusive as NTLM does not follow RFC 2617. If
721
+ # +domain+ is given it is only used for NTLM authentication.
722
+
723
+ def add_auth uri, user, password, realm = nil, domain = nil
724
+ @agent.add_auth uri, user, password, realm, domain
725
+ end
726
+
727
+ ##
728
+ # Are If-Modified-Since conditional requests enabled?
729
+
730
+ def conditional_requests
731
+ @agent.conditional_requests
732
+ end
733
+
734
+ ##
735
+ # Disables If-Modified-Since conditional requests (enabled by default)
736
+
737
+ def conditional_requests= enabled
738
+ @agent.conditional_requests = enabled
739
+ end
740
+
741
+ ##
742
+ # A Mechanize::CookieJar which stores cookies
743
+
744
+ def cookie_jar
745
+ @agent.cookie_jar
746
+ end
747
+
748
+ ##
749
+ # Replaces the cookie jar with +cookie_jar+
750
+
751
+ def cookie_jar= cookie_jar
752
+ @agent.cookie_jar = cookie_jar
753
+ end
754
+
755
+ ##
756
+ # Returns a list of cookies stored in the cookie jar.
757
+
758
+ def cookies
759
+ @agent.cookie_jar.to_a
760
+ end
761
+
762
+ ##
763
+ # Follow HTML meta refresh and HTTP Refresh headers. If set to +:anywhere+
764
+ # meta refresh tags outside of the head element will be followed.
765
+
766
+ def follow_meta_refresh
767
+ @agent.follow_meta_refresh
768
+ end
769
+
770
+ ##
771
+ # Controls following of HTML meta refresh and HTTP Refresh headers in
772
+ # responses.
773
+
774
+ def follow_meta_refresh= follow
775
+ @agent.follow_meta_refresh = follow
776
+ end
777
+
778
+ ##
779
+ # Follow an HTML meta refresh and HTTP Refresh headers that have no "url="
780
+ # in the content attribute.
781
+ #
782
+ # Defaults to false to prevent infinite refresh loops.
783
+
784
+ def follow_meta_refresh_self
785
+ @agent.follow_meta_refresh_self
786
+ end
787
+
788
+ ##
789
+ # Alters the following of HTML meta refresh and HTTP Refresh headers that
790
+ # point to the same page.
791
+
792
+ def follow_meta_refresh_self= follow
793
+ @agent.follow_meta_refresh_self = follow
794
+ end
795
+
796
+ ##
797
+ # Is gzip compression of responses enabled?
798
+
799
+ def gzip_enabled
800
+ @agent.gzip_enabled
801
+ end
802
+
803
+ ##
804
+ # Disables HTTP/1.1 gzip compression (enabled by default)
805
+
806
+ def gzip_enabled=enabled
807
+ @agent.gzip_enabled = enabled
808
+ end
809
+
810
+ ##
811
+ # Connections that have not been used in this many seconds will be reset.
812
+
813
+ def idle_timeout
814
+ @agent.idle_timeout
815
+ end
816
+
817
+ # Sets the idle timeout to +idle_timeout+. The default timeout is 5
818
+ # seconds. If you experience "too many connection resets", reducing this
819
+ # value may help.
820
+
821
+ def idle_timeout= idle_timeout
822
+ @agent.idle_timeout = idle_timeout
823
+ end
824
+
825
+ ##
826
+ # When set to true mechanize will ignore an EOF during chunked transfer
827
+ # encoding so long as at least one byte was received. Be careful when
828
+ # enabling this as it may cause data loss.
829
+ #
830
+ # Net::HTTP does not inform mechanize of where in the chunked stream the EOF
831
+ # occurred. Usually it is after the last-chunk but before the terminating
832
+ # CRLF (invalid termination) but it may occur earlier. In the second case
833
+ # your response body may be incomplete.
834
+
835
+ def ignore_bad_chunking
836
+ @agent.ignore_bad_chunking
837
+ end
838
+
839
+ ##
840
+ # When set to true mechanize will ignore an EOF during chunked transfer
841
+ # encoding. See ignore_bad_chunking for further details
842
+
843
+ def ignore_bad_chunking= ignore_bad_chunking
844
+ @agent.ignore_bad_chunking = ignore_bad_chunking
845
+ end
846
+
847
+ ##
848
+ # Are HTTP/1.1 keep-alive connections enabled?
849
+
850
+ def keep_alive
851
+ @agent.keep_alive
852
+ end
853
+
854
+ ##
855
+ # Disable HTTP/1.1 keep-alive connections if +enable+ is set to false. If
856
+ # you are experiencing "too many connection resets" errors setting this to
857
+ # false will eliminate them.
858
+ #
859
+ # You should first investigate reducing idle_timeout.
860
+
861
+ def keep_alive= enable
862
+ @agent.keep_alive = enable
863
+ end
864
+
865
+ ##
866
+ # The current logger. If no logger has been set Mechanize.log is used.
867
+
868
+ def log
869
+ @log || Mechanize.log
870
+ end
871
+
872
+ ##
873
+ # Sets the +logger+ used by this instance of mechanize
874
+
875
+ def log= logger
876
+ @log = logger
877
+ end
878
+
879
+ ##
880
+ # Responses larger than this will be written to a Tempfile instead of stored
881
+ # in memory. The default is 100,000 bytes.
882
+ #
883
+ # A value of nil disables creation of Tempfiles.
884
+
885
+ def max_file_buffer
886
+ @agent.max_file_buffer
887
+ end
888
+
889
+ ##
890
+ # Sets the maximum size of a response body that will be stored in memory to
891
+ # +bytes+. A value of nil causes all response bodies to be stored in
892
+ # memory.
893
+ #
894
+ # Note that for Mechanize::Download subclasses, the maximum buffer size
895
+ # multiplied by the number of pages stored in history (controlled by
896
+ # #max_history) is an approximate upper limit on the amount of memory
897
+ # Mechanize will use. By default, Mechanize can use up to ~5MB to store
898
+ # response bodies for non-File and non-Page (HTML) responses.
899
+ #
900
+ # See also the discussion under #max_history=
901
+
902
+ def max_file_buffer= bytes
903
+ @agent.max_file_buffer = bytes
904
+ end
905
+
906
+ ##
907
+ # Length of time to wait until a connection is opened in seconds
908
+
909
+ def open_timeout
910
+ @agent.open_timeout
911
+ end
912
+
913
+ ##
914
+ # Sets the connection open timeout to +open_timeout+
915
+
916
+ def open_timeout= open_timeout
917
+ @agent.open_timeout = open_timeout
918
+ end
919
+
920
+ ##
921
+ # Length of time to wait for data from the server
922
+
923
+ def read_timeout
924
+ @agent.read_timeout
925
+ end
926
+
927
+ ##
928
+ # Sets the timeout for each chunk of data read from the server to
929
+ # +read_timeout+. A single request may read many chunks of data.
930
+
931
+ def read_timeout= read_timeout
932
+ @agent.read_timeout = read_timeout
933
+ end
934
+
935
+ ##
936
+ # Controls how mechanize deals with redirects. The following values are
937
+ # allowed:
938
+ #
939
+ # :all, true:: All 3xx redirects are followed (default)
940
+ # :permanent:: Only 301 Moved Permanantly redirects are followed
941
+ # false:: No redirects are followed
942
+
943
+ def redirect_ok
944
+ @agent.redirect_ok
945
+ end
946
+
947
+ alias follow_redirect? redirect_ok
948
+
949
+ ##
950
+ # Sets the mechanize redirect handling policy. See redirect_ok for allowed
951
+ # values
952
+
953
+ def redirect_ok= follow
954
+ @agent.redirect_ok = follow
955
+ end
956
+
957
+ alias follow_redirect= redirect_ok=
958
+
959
+ ##
960
+ # Maximum number of redirections to follow
961
+
962
+ def redirection_limit
963
+ @agent.redirection_limit
964
+ end
965
+
966
+ ##
967
+ # Sets the maximum number of redirections to follow to +limit+
968
+
969
+ def redirection_limit= limit
970
+ @agent.redirection_limit = limit
971
+ end
972
+
973
+ ##
974
+ # Resolve the full path of a link / uri
975
+ def resolve link
976
+ @agent.resolve link
977
+ end
978
+
979
+ ##
980
+ # A hash of custom request headers that will be sent on every request
981
+
982
+ def request_headers
983
+ @agent.request_headers
984
+ end
985
+
986
+ ##
987
+ # Replaces the custom request headers that will be sent on every request
988
+ # with +request_headers+
989
+
990
+ def request_headers= request_headers
991
+ @agent.request_headers = request_headers
992
+ end
993
+
994
+ ##
995
+ # Retry POST and other non-idempotent requests. See RFC 2616 9.1.2.
996
+
997
+ def retry_change_requests
998
+ @agent.retry_change_requests
999
+ end
1000
+
1001
+ ##
1002
+ # When setting +retry_change_requests+ to true you are stating that, for all
1003
+ # the URLs you access with mechanize, making POST and other non-idempotent
1004
+ # requests is safe and will not cause data duplication or other harmful
1005
+ # results.
1006
+ #
1007
+ # If you are experiencing "too many connection resets" errors you should
1008
+ # instead investigate reducing the idle_timeout or disabling keep_alive
1009
+ # connections.
1010
+
1011
+ def retry_change_requests= retry_change_requests
1012
+ @agent.retry_change_requests = retry_change_requests
1013
+ end
1014
+
1015
+ ##
1016
+ # Will <code>/robots.txt</code> files be obeyed?
1017
+
1018
+ def robots
1019
+ @agent.robots
1020
+ end
1021
+
1022
+ ##
1023
+ # When +enabled+ mechanize will retrieve and obey <code>robots.txt</code>
1024
+ # files
1025
+
1026
+ def robots= enabled
1027
+ @agent.robots = enabled
1028
+ end
1029
+
1030
+ ##
1031
+ # The handlers for HTTP and other URI protocols.
1032
+
1033
+ def scheme_handlers
1034
+ @agent.scheme_handlers
1035
+ end
1036
+
1037
+ ##
1038
+ # Replaces the URI scheme handler table with +scheme_handlers+
1039
+
1040
+ def scheme_handlers= scheme_handlers
1041
+ @agent.scheme_handlers = scheme_handlers
1042
+ end
1043
+
1044
+ ##
1045
+ # The identification string for the client initiating a web request
1046
+
1047
+ def user_agent
1048
+ @agent.user_agent
1049
+ end
1050
+
1051
+ ##
1052
+ # Sets the User-Agent used by mechanize to +user_agent+. See also
1053
+ # user_agent_alias
1054
+
1055
+ def user_agent= user_agent
1056
+ @agent.user_agent = user_agent
1057
+ end
1058
+
1059
+ ##
1060
+ # Set the user agent for the Mechanize object based on the given +name+.
1061
+ #
1062
+ # See also AGENT_ALIASES
1063
+
1064
+ def user_agent_alias= name
1065
+ self.user_agent = AGENT_ALIASES[name] ||
1066
+ raise(ArgumentError, "unknown agent alias #{name.inspect}")
1067
+ end
1068
+
1069
+ ##
1070
+ # The value of watch_for_set is passed to pluggable parsers for retrieved
1071
+ # content
1072
+
1073
+ attr_accessor :watch_for_set
1074
+
1075
+ # :section: SSL
1076
+ #
1077
+ # SSL settings for mechanize. These must be set in the block given to
1078
+ # Mechanize.new
1079
+
1080
+ ##
1081
+ # Path to an OpenSSL server certificate file
1082
+
1083
+ def ca_file
1084
+ @agent.ca_file
1085
+ end
1086
+
1087
+ ##
1088
+ # Sets the certificate file used for SSL connections
1089
+
1090
+ def ca_file= ca_file
1091
+ @agent.ca_file = ca_file
1092
+ end
1093
+
1094
+ ##
1095
+ # An OpenSSL client certificate or the path to a certificate file.
1096
+
1097
+ def cert
1098
+ @agent.certificate
1099
+ end
1100
+
1101
+ ##
1102
+ # Sets the OpenSSL client certificate +cert+ to the given path or
1103
+ # certificate instance
1104
+
1105
+ def cert= cert
1106
+ @agent.certificate = cert
1107
+ end
1108
+
1109
+ ##
1110
+ # An OpenSSL certificate store for verifying server certificates. This
1111
+ # defaults to the default certificate store for your system.
1112
+ #
1113
+ # If your system does not ship with a default set of certificates you can
1114
+ # retrieve a copy of the set from Mozilla here:
1115
+ # http://curl.haxx.se/docs/caextract.html
1116
+ #
1117
+ # (Note that this set does not have an HTTPS download option so you may
1118
+ # wish to use the firefox-db2pem.sh script to extract the certificates
1119
+ # from a local install to avoid man-in-the-middle attacks.)
1120
+ #
1121
+ # After downloading or generating a cacert.pem from the above link you
1122
+ # can create a certificate store from the pem file like this:
1123
+ #
1124
+ # cert_store = OpenSSL::X509::Store.new
1125
+ # cert_store.add_file 'cacert.pem'
1126
+ #
1127
+ # And have mechanize use it with:
1128
+ #
1129
+ # agent.cert_store = cert_store
1130
+
1131
+ def cert_store
1132
+ @agent.cert_store
1133
+ end
1134
+
1135
+ ##
1136
+ # Sets the OpenSSL certificate store to +store+.
1137
+ #
1138
+ # See also #cert_store
1139
+
1140
+ def cert_store= cert_store
1141
+ @agent.cert_store = cert_store
1142
+ end
1143
+
1144
+ ##
1145
+ # What is this?
1146
+ #
1147
+ # Why is it different from #cert?
1148
+
1149
+ def certificate # :nodoc:
1150
+ @agent.certificate
1151
+ end
1152
+
1153
+ ##
1154
+ # An OpenSSL private key or the path to a private key
1155
+
1156
+ def key
1157
+ @agent.private_key
1158
+ end
1159
+
1160
+ ##
1161
+ # Sets the OpenSSL client +key+ to the given path or key instance. If a
1162
+ # path is given, the path must contain an RSA key file.
1163
+
1164
+ def key= key
1165
+ @agent.private_key = key
1166
+ end
1167
+
1168
+ ##
1169
+ # OpenSSL client key password
1170
+
1171
+ def pass
1172
+ @agent.pass
1173
+ end
1174
+
1175
+ ##
1176
+ # Sets the client key password to +pass+
1177
+
1178
+ def pass= pass
1179
+ @agent.pass = pass
1180
+ end
1181
+
1182
+ ##
1183
+ # SSL version to use.
1184
+
1185
+ def ssl_version
1186
+ @agent.ssl_version
1187
+ end
1188
+
1189
+ ##
1190
+ # Sets the SSL version to use to +version+ without client/server
1191
+ # negotiation.
1192
+
1193
+ def ssl_version= ssl_version
1194
+ @agent.ssl_version = ssl_version
1195
+ end
1196
+
1197
+ ##
1198
+ # A callback for additional certificate verification. See
1199
+ # OpenSSL::SSL::SSLContext#verify_callback
1200
+ #
1201
+ # The callback can be used for debugging or to ignore errors by always
1202
+ # returning +true+. Specifying nil uses the default method that was valid
1203
+ # when the SSLContext was created
1204
+
1205
+ def verify_callback
1206
+ @agent.verify_callback
1207
+ end
1208
+
1209
+ ##
1210
+ # Sets the OpenSSL certificate verification callback
1211
+
1212
+ def verify_callback= verify_callback
1213
+ @agent.verify_callback = verify_callback
1214
+ end
1215
+
1216
+ ##
1217
+ # the OpenSSL server certificate verification method. The default is
1218
+ # OpenSSL::SSL::VERIFY_PEER and certificate verification uses the default
1219
+ # system certificates. See also cert_store
1220
+
1221
+ def verify_mode
1222
+ @agent.verify_mode
1223
+ end
1224
+
1225
+ ##
1226
+ # Sets the OpenSSL server certificate verification method.
1227
+
1228
+ def verify_mode= verify_mode
1229
+ @agent.verify_mode = verify_mode
1230
+ end
1231
+
1232
+ # :section: Utilities
1233
+
1234
+ attr_reader :agent # :nodoc:
1235
+
1236
+ ##
1237
+ # Parses the +body+ of the +response+ from +uri+ using the pluggable parser
1238
+ # that matches its content type
1239
+
1240
+ def parse uri, response, body
1241
+ content_type = nil
1242
+
1243
+ unless response['Content-Type'].nil?
1244
+ data, = response['Content-Type'].split ';', 2
1245
+ content_type, = data.downcase.split ',', 2 unless data.nil?
1246
+ end
1247
+
1248
+ parser_klass = @pluggable_parser.parser content_type
1249
+
1250
+ unless parser_klass <= Mechanize::Download then
1251
+ body = case body
1252
+ when IO, Tempfile, StringIO then
1253
+ body.read
1254
+ else
1255
+ body
1256
+ end
1257
+ end
1258
+
1259
+ parser_klass.new uri, response, body, response.code do |parser|
1260
+ parser.mech = self if parser.respond_to? :mech=
1261
+
1262
+ parser.watch_for_set = @watch_for_set if
1263
+ @watch_for_set and parser.respond_to?(:watch_for_set=)
1264
+ end
1265
+ end
1266
+
1267
+ def pretty_print(q) # :nodoc:
1268
+ q.object_group(self) {
1269
+ q.breakable
1270
+ q.pp cookie_jar
1271
+ q.breakable
1272
+ q.pp current_page
1273
+ }
1274
+ end
1275
+
1276
+ ##
1277
+ # Sets the proxy +address+ at +port+ with an optional +user+ and +password+
1278
+
1279
+ def set_proxy address, port, user = nil, password = nil
1280
+ @proxy_addr = address
1281
+ @proxy_port = port
1282
+ @proxy_user = user
1283
+ @proxy_pass = password
1284
+
1285
+ @agent.set_proxy address, port, user, password
1286
+ end
1287
+
1288
+ ##
1289
+ # Clears history and cookies.
1290
+
1291
+ def reset
1292
+ @agent.reset
1293
+ end
1294
+
1295
+ ##
1296
+ # Shuts down this session by clearing browsing state and closing all
1297
+ # persistent connections.
1298
+
1299
+ def shutdown
1300
+ reset
1301
+ @agent.shutdown
1302
+ end
1303
+
1304
+ private
1305
+
1306
+ ##
1307
+ # Posts +form+ to +uri+
1308
+
1309
+ def post_form(uri, form, headers = {})
1310
+ cur_page = form.page || current_page ||
1311
+ Page.new
1312
+
1313
+ request_data = form.request_data
1314
+
1315
+ log.debug("query: #{ request_data.inspect }") if log
1316
+
1317
+ headers = {
1318
+ 'Content-Type' => form.enctype,
1319
+ 'Content-Length' => request_data.size.to_s,
1320
+ }.merge headers
1321
+
1322
+ # fetch the page
1323
+ page = @agent.fetch uri, :post, headers, [request_data], cur_page
1324
+ add_to_history(page)
1325
+ page
1326
+ end
1327
+
1328
+ ##
1329
+ # Adds +page+ to the history
1330
+
1331
+ def add_to_history(page)
1332
+ @agent.history.push(page, @agent.resolve(page.uri))
1333
+ @history_added.call(page) if @history_added
1334
+ end
1335
+
1336
+ end
1337
+
1338
+ require 'mechanize/element_not_found_error'
1339
+ require 'mechanize/response_read_error'
1340
+ require 'mechanize/chunked_termination_error'
1341
+ require 'mechanize/content_type_error'
1342
+ require 'mechanize/cookie'
1343
+ require 'mechanize/cookie_jar'
1344
+ require 'mechanize/parser'
1345
+ require 'mechanize/download'
1346
+ require 'mechanize/directory_saver'
1347
+ require 'mechanize/file'
1348
+ require 'mechanize/file_connection'
1349
+ require 'mechanize/file_request'
1350
+ require 'mechanize/file_response'
1351
+ require 'mechanize/form'
1352
+ require 'mechanize/history'
1353
+ require 'mechanize/http'
1354
+ require 'mechanize/http/agent'
1355
+ require 'mechanize/http/auth_challenge'
1356
+ require 'mechanize/http/auth_realm'
1357
+ require 'mechanize/http/content_disposition_parser'
1358
+ require 'mechanize/http/www_authenticate_parser'
1359
+ require 'mechanize/image'
1360
+ require 'mechanize/page'
1361
+ require 'mechanize/pluggable_parsers'
1362
+ require 'mechanize/redirect_limit_reached_error'
1363
+ require 'mechanize/redirect_not_get_or_head_error'
1364
+ require 'mechanize/response_code_error'
1365
+ require 'mechanize/robots_disallowed_error'
1366
+ require 'mechanize/unauthorized_error'
1367
+ require 'mechanize/unsupported_scheme_error'
1368
+ require 'mechanize/util'
1369
+