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,40 @@
1
+ ##
2
+ # A Net::HTTP connection wrapper that holds extra information for managing the
3
+ # connection's lifetime.
4
+
5
+ class Net::HTTP::Persistent::Connection # :nodoc:
6
+
7
+ attr_accessor :http
8
+
9
+ attr_accessor :last_use
10
+
11
+ attr_accessor :requests
12
+
13
+ attr_accessor :ssl_generation
14
+
15
+ def initialize http_class, http_args, ssl_generation
16
+ @http = http_class.new(*http_args)
17
+ @ssl_generation = ssl_generation
18
+
19
+ reset
20
+ end
21
+
22
+ def finish
23
+ @http.finish
24
+ rescue IOError
25
+ ensure
26
+ reset
27
+ end
28
+
29
+ def reset
30
+ @last_use = Net::HTTP::Persistent::EPOCH
31
+ @requests = 0
32
+ end
33
+
34
+ def ressl ssl_generation
35
+ @ssl_generation = ssl_generation
36
+
37
+ finish
38
+ end
39
+
40
+ end
@@ -0,0 +1,53 @@
1
+ class Net::HTTP::Persistent::Pool < ConnectionPool # :nodoc:
2
+
3
+ attr_reader :available # :nodoc:
4
+ attr_reader :key # :nodoc:
5
+
6
+ def initialize(options = {}, &block)
7
+ super
8
+
9
+ @available = Net::HTTP::Persistent::TimedStackMulti.new(@size, &block)
10
+ @key = "current-#{@available.object_id}"
11
+ end
12
+
13
+ def checkin net_http_args
14
+ stack = Thread.current[@key][net_http_args] ||= []
15
+
16
+ raise ConnectionPool::Error, 'no connections are checked out' if
17
+ stack.empty?
18
+
19
+ conn = stack.pop
20
+
21
+ if stack.empty?
22
+ @available.push conn, connection_args: net_http_args
23
+
24
+ Thread.current[@key].delete(net_http_args)
25
+ Thread.current[@key] = nil if Thread.current[@key].empty?
26
+ end
27
+
28
+ nil
29
+ end
30
+
31
+ def checkout net_http_args
32
+ stacks = Thread.current[@key] ||= {}
33
+ stack = stacks[net_http_args] ||= []
34
+
35
+ if stack.empty? then
36
+ conn = @available.pop connection_args: net_http_args
37
+ else
38
+ conn = stack.last
39
+ end
40
+
41
+ stack.push conn
42
+
43
+ conn
44
+ end
45
+
46
+ def shutdown
47
+ Thread.current[@key] = nil
48
+ super
49
+ end
50
+ end
51
+
52
+ require 'net/http/persistent/timed_stack_multi'
53
+
@@ -0,0 +1,79 @@
1
+ class Net::HTTP::Persistent::TimedStackMulti < ConnectionPool::TimedStack # :nodoc:
2
+
3
+ ##
4
+ # Returns a new hash that has arrays for keys
5
+ #
6
+ # Using a class method to limit the bindings referenced by the hash's
7
+ # default_proc
8
+
9
+ def self.hash_of_arrays # :nodoc:
10
+ Hash.new { |h,k| h[k] = [] }
11
+ end
12
+
13
+ def initialize(size = 0, &block)
14
+ super
15
+
16
+ @enqueued = 0
17
+ @ques = self.class.hash_of_arrays
18
+ @lru = {}
19
+ @key = :"connection_args-#{object_id}"
20
+ end
21
+
22
+ def empty?
23
+ (@created - @enqueued) >= @max
24
+ end
25
+
26
+ def length
27
+ @max - @created + @enqueued
28
+ end
29
+
30
+ private
31
+
32
+ def connection_stored? options = {} # :nodoc:
33
+ !@ques[options[:connection_args]].empty?
34
+ end
35
+
36
+ def fetch_connection options = {} # :nodoc:
37
+ connection_args = options[:connection_args]
38
+
39
+ @enqueued -= 1
40
+ lru_update connection_args
41
+ @ques[connection_args].pop
42
+ end
43
+
44
+ def lru_update connection_args # :nodoc:
45
+ @lru.delete connection_args
46
+ @lru[connection_args] = true
47
+ end
48
+
49
+ def shutdown_connections # :nodoc:
50
+ @ques.each_key do |key|
51
+ super connection_args: key
52
+ end
53
+ end
54
+
55
+ def store_connection obj, options = {} # :nodoc:
56
+ @ques[options[:connection_args]].push obj
57
+ @enqueued += 1
58
+ end
59
+
60
+ def try_create options = {} # :nodoc:
61
+ connection_args = options[:connection_args]
62
+
63
+ if @created >= @max && @enqueued >= 1
64
+ oldest, = @lru.first
65
+ @lru.delete oldest
66
+ @ques[oldest].pop
67
+
68
+ @created -= 1
69
+ end
70
+
71
+ if @created < @max
72
+ @created += 1
73
+ lru_update connection_args
74
+ return @create_block.call(connection_args)
75
+ end
76
+ end
77
+
78
+ end
79
+
@@ -0,0 +1,1621 @@
1
+ require 'rubygems'
2
+ require 'minitest/autorun'
3
+ require 'net/http/persistent'
4
+ require 'stringio'
5
+
6
+ HAVE_OPENSSL = defined?(OpenSSL::SSL)
7
+
8
+ module Net::HTTP::Persistent::TestConnect
9
+ def self.included mod
10
+ mod.send :alias_method, :orig_connect, :connect
11
+
12
+ def mod.use_connect which
13
+ self.send :remove_method, :connect
14
+ self.send :alias_method, :connect, which
15
+ end
16
+ end
17
+
18
+ def host_down_connect
19
+ raise Errno::EHOSTDOWN
20
+ end
21
+
22
+ def test_connect
23
+ unless use_ssl? then
24
+ io = Object.new
25
+ def io.setsockopt(*a) @setsockopts ||= []; @setsockopts << a end
26
+
27
+ @socket = Net::BufferedIO.new io
28
+
29
+ return
30
+ end
31
+
32
+ io = open '/dev/null'
33
+ def io.setsockopt(*a) @setsockopts ||= []; @setsockopts << a end
34
+
35
+ @ssl_context ||= OpenSSL::SSL::SSLContext.new
36
+
37
+ @ssl_context.verify_mode = OpenSSL::SSL::VERIFY_PEER unless
38
+ @ssl_context.verify_mode
39
+
40
+ s = OpenSSL::SSL::SSLSocket.new io, @ssl_context
41
+
42
+ @socket = Net::BufferedIO.new s
43
+ end
44
+
45
+ def refused_connect
46
+ raise Errno::ECONNREFUSED
47
+ end
48
+ end
49
+
50
+ class Net::HTTP
51
+ include Net::HTTP::Persistent::TestConnect
52
+ end
53
+
54
+ class TestNetHttpPersistent < Minitest::Test
55
+
56
+ def setup
57
+ @http = Net::HTTP::Persistent.new
58
+
59
+ @uri = URI.parse 'http://example.com/path'
60
+
61
+ ENV.delete 'http_proxy'
62
+ ENV.delete 'HTTP_PROXY'
63
+ ENV.delete 'http_proxy_user'
64
+ ENV.delete 'HTTP_PROXY_USER'
65
+ ENV.delete 'http_proxy_pass'
66
+ ENV.delete 'HTTP_PROXY_PASS'
67
+ ENV.delete 'no_proxy'
68
+ ENV.delete 'NO_PROXY'
69
+
70
+ Net::HTTP.use_connect :test_connect
71
+ end
72
+
73
+ def teardown
74
+ Net::HTTP.use_connect :orig_connect
75
+ end
76
+
77
+ class BasicConnection
78
+ attr_accessor :started, :finished, :address, :port, :use_ssl,
79
+ :read_timeout, :open_timeout, :keep_alive_timeout
80
+ attr_accessor :ciphers, :ssl_timeout, :ssl_version, :min_version,
81
+ :max_version, :verify_depth, :verify_mode, :cert_store,
82
+ :ca_file, :ca_path, :cert, :key
83
+ attr_reader :req, :debug_output
84
+ def initialize
85
+ @started, @finished = 0, 0
86
+ @address, @port = 'example.com', 80
87
+ @use_ssl = false
88
+ end
89
+ def finish
90
+ @finished += 1
91
+ @socket = nil
92
+ end
93
+ def finished?
94
+ @finished >= 1
95
+ end
96
+ def pipeline requests, &block
97
+ requests.map { |r| r.path }
98
+ end
99
+ def reset?
100
+ @started == @finished + 1
101
+ end
102
+ def set_debug_output io
103
+ @debug_output = io
104
+ end
105
+ def start
106
+ @started += 1
107
+ io = Object.new
108
+ def io.setsockopt(*a) @setsockopts ||= []; @setsockopts << a end
109
+ @socket = Net::BufferedIO.new io
110
+ end
111
+ def started?
112
+ @started >= 1
113
+ end
114
+ def proxy_address
115
+ end
116
+ def proxy_port
117
+ end
118
+ end
119
+
120
+ def basic_connection
121
+ raise "#{@uri} is not HTTP" unless @uri.scheme.downcase == 'http'
122
+
123
+ net_http_args = [@uri.host, @uri.port, nil, nil, nil, nil]
124
+
125
+ connection = Net::HTTP::Persistent::Connection.allocate
126
+ connection.ssl_generation = @http.ssl_generation
127
+ connection.http = BasicConnection.new
128
+ connection.reset
129
+
130
+ @http.pool.available.push connection, connection_args: net_http_args
131
+
132
+ connection
133
+ end
134
+
135
+ def connection
136
+ connection = basic_connection
137
+ connection.last_use = Time.now
138
+
139
+ def (connection.http).request(req)
140
+ @req = req
141
+ r = Net::HTTPResponse.allocate
142
+ r.instance_variable_set :@header, {}
143
+ def r.http_version() '1.1' end
144
+ def r.read_body() :read_body end
145
+ yield r if block_given?
146
+ r
147
+ end
148
+
149
+ connection
150
+ end
151
+
152
+ def ssl_connection
153
+ raise "#{@uri} is not HTTPS" unless @uri.scheme.downcase == 'https'
154
+
155
+ net_http_args = [@uri.host, @uri.port, nil, nil, nil, nil]
156
+
157
+ connection = Net::HTTP::Persistent::Connection.allocate
158
+ connection.ssl_generation = @http.ssl_generation
159
+ connection.http = BasicConnection.new
160
+ connection.reset
161
+
162
+ @http.pool.available.push connection, connection_args: net_http_args
163
+
164
+ connection
165
+ end
166
+
167
+ def test_initialize
168
+ assert_nil @http.proxy_uri
169
+
170
+ assert_empty @http.no_proxy
171
+
172
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
173
+
174
+ ssl_session_exists = OpenSSL::SSL.const_defined? :Session
175
+
176
+ assert_equal ssl_session_exists, @http.reuse_ssl_sessions
177
+ end
178
+
179
+ def test_initialize_name
180
+ http = Net::HTTP::Persistent.new name: 'name'
181
+ assert_equal 'name', http.name
182
+ end
183
+
184
+ def test_initialize_no_ssl_session
185
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
186
+
187
+ skip "OpenSSL::SSL::Session does not exist on #{RUBY_PLATFORM}" unless
188
+ OpenSSL::SSL.const_defined? :Session
189
+
190
+ ssl_session = OpenSSL::SSL::Session
191
+
192
+ OpenSSL::SSL.send :remove_const, :Session
193
+
194
+ http = Net::HTTP::Persistent.new
195
+
196
+ refute http.reuse_ssl_sessions
197
+ ensure
198
+ OpenSSL::SSL.const_set :Session, ssl_session if ssl_session
199
+ end
200
+
201
+ def test_initialize_proxy
202
+ proxy_uri = URI.parse 'http://proxy.example'
203
+
204
+ http = Net::HTTP::Persistent.new proxy: proxy_uri
205
+
206
+ assert_equal proxy_uri, http.proxy_uri
207
+ end
208
+
209
+ def test_ca_file_equals
210
+ @http.ca_file = :ca_file
211
+
212
+ assert_equal :ca_file, @http.ca_file
213
+ assert_equal 1, @http.ssl_generation
214
+ end
215
+
216
+ def test_ca_path_equals
217
+ @http.ca_path = :ca_path
218
+
219
+ assert_equal :ca_path, @http.ca_path
220
+ assert_equal 1, @http.ssl_generation
221
+ end
222
+
223
+ def test_can_retry_eh_change_requests
224
+ post = Net::HTTP::Post.new '/'
225
+
226
+ refute @http.can_retry? post
227
+
228
+ @http.retry_change_requests = true
229
+
230
+ assert @http.can_retry? post
231
+ end
232
+
233
+ def test_can_retry_eh_idempotent
234
+ head = Net::HTTP::Head.new '/'
235
+
236
+ refute @http.can_retry? head
237
+
238
+ post = Net::HTTP::Post.new '/'
239
+
240
+ refute @http.can_retry? post
241
+ end
242
+
243
+ def test_cert_store_equals
244
+ @http.cert_store = :cert_store
245
+
246
+ assert_equal :cert_store, @http.cert_store
247
+ assert_equal 1, @http.ssl_generation
248
+ end
249
+
250
+ def test_certificate_equals
251
+ @http.certificate = :cert
252
+
253
+ assert_equal :cert, @http.certificate
254
+ assert_equal 1, @http.ssl_generation
255
+ end
256
+
257
+ def test_ciphers_equals
258
+ @http.ciphers = :ciphers
259
+
260
+ assert_equal :ciphers, @http.ciphers
261
+ assert_equal 1, @http.ssl_generation
262
+ end
263
+
264
+ def test_connection_for
265
+ @http.open_timeout = 123
266
+ @http.read_timeout = 321
267
+ @http.idle_timeout = 42
268
+
269
+ used = @http.connection_for @uri do |c|
270
+ assert_kind_of Net::HTTP, c.http
271
+
272
+ assert c.http.started?
273
+ refute c.http.proxy?
274
+
275
+ assert_equal 123, c.http.open_timeout
276
+ assert_equal 321, c.http.read_timeout
277
+ assert_equal 42, c.http.keep_alive_timeout
278
+
279
+ c
280
+ end
281
+
282
+ stored = @http.pool.checkout ['example.com', 80, nil, nil, nil, nil]
283
+
284
+ assert_same used, stored
285
+ end
286
+
287
+ def test_connection_for_cached
288
+ cached = basic_connection
289
+ cached.http.start
290
+
291
+ @http.read_timeout = 5
292
+
293
+ @http.connection_for @uri do |c|
294
+ assert c.http.started?
295
+
296
+ assert_equal 5, c.http.read_timeout
297
+
298
+ assert_same cached, c
299
+ end
300
+ end
301
+
302
+ def test_connection_for_closed
303
+ cached = basic_connection
304
+ cached.http.start
305
+ if Socket.const_defined? :TCP_NODELAY then
306
+ io = Object.new
307
+ def io.setsockopt(*a) raise IOError, 'closed stream' end
308
+ cached.instance_variable_set :@socket, Net::BufferedIO.new(io)
309
+ end
310
+
311
+ @http.connection_for @uri do |c|
312
+ assert c.http.started?
313
+
314
+ socket = c.http.instance_variable_get :@socket
315
+
316
+ refute_includes socket.io.instance_variables, :@setsockopt
317
+ refute_includes socket.io.instance_variables, '@setsockopt'
318
+ end
319
+ end
320
+
321
+ def test_connection_for_debug_output
322
+ io = StringIO.new
323
+ @http.debug_output = io
324
+
325
+ @http.connection_for @uri do |c|
326
+ assert c.http.started?
327
+ assert_equal io, c.http.instance_variable_get(:@debug_output)
328
+ end
329
+ end
330
+
331
+ def test_connection_for_cached_expire_always
332
+ cached = basic_connection
333
+ cached.http.start
334
+ cached.requests = 10
335
+ cached.last_use = Time.now # last used right now
336
+
337
+ @http.idle_timeout = 0
338
+
339
+ @http.connection_for @uri do |c|
340
+ assert c.http.started?
341
+
342
+ assert_same cached, c
343
+
344
+ assert_equal 0, c.requests, 'connection reset due to timeout'
345
+ end
346
+ end
347
+
348
+ def test_connection_for_cached_expire_never
349
+ cached = basic_connection
350
+ cached.http.start
351
+ cached.requests = 10
352
+ cached.last_use = Time.now # last used right now
353
+
354
+ @http.idle_timeout = nil
355
+
356
+ @http.connection_for @uri do |c|
357
+ assert c.http.started?
358
+
359
+ assert_same cached, c
360
+
361
+ assert_equal 10, c.requests, 'connection reset despite no timeout'
362
+ end
363
+ end
364
+
365
+ def test_connection_for_cached_expired
366
+ cached = basic_connection
367
+ cached.http.start
368
+ cached.requests = 10
369
+ cached.last_use = Time.now - 3600
370
+
371
+ @http.connection_for @uri do |c|
372
+ assert c.http.started?
373
+
374
+ assert_same cached, c
375
+ assert_equal 0, cached.requests, 'connection not reset due to timeout'
376
+ end
377
+ end
378
+
379
+ def test_connection_for_finished_ssl
380
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
381
+
382
+ uri = URI.parse 'https://example.com/path'
383
+
384
+ @http.connection_for uri do |c|
385
+ assert c.http.started?
386
+ assert c.http.use_ssl?
387
+
388
+ @http.finish c
389
+
390
+ refute c.http.started?
391
+ end
392
+
393
+ @http.connection_for uri do |c2|
394
+ assert c2.http.started?
395
+ end
396
+ end
397
+
398
+ def test_connection_for_ipv6
399
+ uri = URI.parse 'https://[::1]/'
400
+
401
+ @http.connection_for uri do |c|
402
+ assert_equal '::1', c.http.address
403
+ end
404
+ end
405
+
406
+ def test_connection_for_host_down
407
+ c = basic_connection
408
+ def (c.http).start; raise Errno::EHOSTDOWN end
409
+ def (c.http).started?; false end
410
+
411
+ e = assert_raises Net::HTTP::Persistent::Error do
412
+ @http.connection_for @uri do end
413
+ end
414
+
415
+ assert_equal 'host down: example.com:80', e.message
416
+ end
417
+
418
+ def test_connection_for_http_class_with_fakeweb
419
+ Object.send :const_set, :FakeWeb, nil
420
+
421
+ @http.connection_for @uri do |c|
422
+ assert_instance_of Net::HTTP, c.http
423
+ end
424
+ ensure
425
+ if Object.const_defined?(:FakeWeb) then
426
+ Object.send :remove_const, :FakeWeb
427
+ end
428
+ end
429
+
430
+ def test_connection_for_http_class_with_webmock
431
+ Object.send :const_set, :WebMock, nil
432
+ @http.connection_for @uri do |c|
433
+ assert_instance_of Net::HTTP, c.http
434
+ end
435
+ ensure
436
+ if Object.const_defined?(:WebMock) then
437
+ Object.send :remove_const, :WebMock
438
+ end
439
+ end
440
+
441
+ def test_connection_for_http_class_with_artifice
442
+ Object.send :const_set, :Artifice, nil
443
+ @http.connection_for @uri do |c|
444
+ assert_instance_of Net::HTTP, c.http
445
+ end
446
+ ensure
447
+ if Object.const_defined?(:Artifice) then
448
+ Object.send :remove_const, :Artifice
449
+ end
450
+ end
451
+
452
+ def test_connection_for_name
453
+ http = Net::HTTP::Persistent.new name: 'name'
454
+ uri = URI.parse 'http://example/'
455
+
456
+ http.connection_for uri do |c|
457
+ assert c.http.started?
458
+ end
459
+ end
460
+
461
+ def test_connection_for_proxy
462
+ uri = URI.parse 'http://proxy.example'
463
+ uri.user = 'johndoe'
464
+ uri.password = 'muffins'
465
+
466
+ http = Net::HTTP::Persistent.new proxy: uri
467
+
468
+ used = http.connection_for @uri do |c|
469
+ assert c.http.started?
470
+ assert c.http.proxy?
471
+
472
+ c
473
+ end
474
+
475
+ stored = http.pool.checkout ['example.com', 80,
476
+ 'proxy.example', 80,
477
+ 'johndoe', 'muffins']
478
+
479
+ assert_same used, stored
480
+ end
481
+
482
+ def test_connection_for_proxy_unescaped
483
+ uri = URI.parse 'http://proxy.example'
484
+ uri.user = 'john%40doe'
485
+ uri.password = 'muf%3Afins'
486
+ uri.freeze
487
+
488
+ http = Net::HTTP::Persistent.new proxy: uri
489
+
490
+ http.connection_for @uri do end
491
+
492
+ stored = http.pool.checkout ['example.com', 80,
493
+ 'proxy.example', 80,
494
+ 'john@doe', 'muf:fins']
495
+
496
+ assert stored
497
+ end
498
+
499
+ def test_connection_for_proxy_host_down
500
+ Net::HTTP.use_connect :host_down_connect
501
+
502
+ uri = URI.parse 'http://proxy.example'
503
+ uri.user = 'johndoe'
504
+ uri.password = 'muffins'
505
+
506
+ http = Net::HTTP::Persistent.new proxy: uri
507
+
508
+ e = assert_raises Net::HTTP::Persistent::Error do
509
+ http.connection_for @uri do end
510
+ end
511
+
512
+ assert_equal 'host down: proxy.example:80', e.message
513
+ end
514
+
515
+ def test_connection_for_proxy_refused
516
+ Net::HTTP.use_connect :refused_connect
517
+
518
+ uri = URI.parse 'http://proxy.example'
519
+ uri.user = 'johndoe'
520
+ uri.password = 'muffins'
521
+
522
+ http = Net::HTTP::Persistent.new proxy: uri
523
+
524
+ e = assert_raises Net::HTTP::Persistent::Error do
525
+ http.connection_for @uri do end
526
+ end
527
+
528
+ assert_equal 'connection refused: proxy.example:80', e.message
529
+ end
530
+
531
+ def test_connection_for_no_proxy
532
+ uri = URI.parse 'http://proxy.example'
533
+ uri.user = 'johndoe'
534
+ uri.password = 'muffins'
535
+ uri.query = 'no_proxy=example.com'
536
+
537
+ http = Net::HTTP::Persistent.new proxy: uri
538
+
539
+ http.connection_for @uri do |c|
540
+ assert c.http.started?
541
+ refute c.http.proxy?
542
+ end
543
+
544
+ stored = http.pool.checkout ['example.com', 80]
545
+
546
+ assert stored
547
+ end
548
+
549
+ def test_connection_for_no_proxy_from_env
550
+ ENV['http_proxy'] = 'proxy.example'
551
+ ENV['no_proxy'] = 'localhost, example.com,'
552
+ ENV['proxy_user'] = 'johndoe'
553
+ ENV['proxy_password'] = 'muffins'
554
+
555
+ http = Net::HTTP::Persistent.new proxy: :ENV
556
+
557
+ http.connection_for @uri do |c|
558
+ assert c.http.started?
559
+ refute c.http.proxy?
560
+ refute c.http.proxy_from_env?
561
+ end
562
+ end
563
+
564
+ def test_connection_for_refused
565
+ Net::HTTP.use_connect :refused_connect
566
+
567
+ e = assert_raises Net::HTTP::Persistent::Error do
568
+ @http.connection_for @uri do end
569
+ end
570
+
571
+ assert_equal 'connection refused: example.com:80', e.message
572
+ end
573
+
574
+ def test_connection_for_ssl
575
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
576
+
577
+ uri = URI.parse 'https://example.com/path'
578
+
579
+ @http.connection_for uri do |c|
580
+ assert c.http.started?
581
+ assert c.http.use_ssl?
582
+ end
583
+ end
584
+
585
+ def test_connection_for_ssl_cached
586
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
587
+
588
+ @uri = URI.parse 'https://example.com/path'
589
+
590
+ cached = ssl_connection
591
+
592
+ @http.connection_for @uri do |c|
593
+ assert_same cached, c
594
+ end
595
+ end
596
+
597
+ def test_connection_for_ssl_cached_reconnect
598
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
599
+
600
+ @uri = URI.parse 'https://example.com/path'
601
+
602
+ cached = ssl_connection
603
+
604
+ ssl_generation = @http.ssl_generation
605
+
606
+ @http.reconnect_ssl
607
+
608
+ @http.connection_for @uri do |c|
609
+ assert_same cached, c
610
+ refute_equal ssl_generation, c.ssl_generation
611
+ end
612
+ end
613
+
614
+ def test_connection_for_ssl_case
615
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
616
+
617
+ uri = URI.parse 'HTTPS://example.com/path'
618
+ @http.connection_for uri do |c|
619
+ assert c.http.started?
620
+ assert c.http.use_ssl?
621
+ end
622
+ end
623
+
624
+ def test_connection_for_timeout
625
+ cached = basic_connection
626
+ cached.http.start
627
+ cached.requests = 10
628
+ cached.last_use = Time.now - 6
629
+
630
+ @http.connection_for @uri do |c|
631
+ assert c.http.started?
632
+ assert_equal 0, c.requests
633
+
634
+ assert_same cached, c
635
+ end
636
+ end
637
+
638
+ def test_error_message
639
+ c = basic_connection
640
+ c.last_use = Time.now - 1
641
+ c.requests = 5
642
+
643
+ message = @http.error_message c
644
+ assert_match %r%after 4 requests on #{c.http.object_id}%, message
645
+ assert_match %r%, last used [\d.]+ seconds ago%, message
646
+ end
647
+
648
+ def test_escape
649
+ assert_nil @http.escape nil
650
+
651
+ assert_equal '+%3F', @http.escape(' ?')
652
+ end
653
+
654
+ def test_unescape
655
+ assert_nil @http.unescape nil
656
+
657
+ assert_equal ' ?', @http.unescape('+%3F')
658
+ end
659
+
660
+ def test_expired_eh
661
+ c = basic_connection
662
+ c.requests = 0
663
+ c.last_use = Time.now - 11
664
+
665
+ @http.idle_timeout = 0
666
+ assert @http.expired? c
667
+
668
+ @http.idle_timeout = 10
669
+ assert @http.expired? c
670
+
671
+ @http.idle_timeout = 11
672
+ assert @http.expired? c
673
+
674
+ @http.idle_timeout = 12
675
+ refute @http.expired? c
676
+
677
+ @http.idle_timeout = nil
678
+ refute @http.expired? c
679
+ end
680
+
681
+ def test_expired_due_to_max_requests
682
+ c = basic_connection
683
+ c.requests = 0
684
+ c.last_use = Time.now
685
+
686
+ refute @http.expired? c
687
+
688
+ c.requests = 10
689
+ refute @http.expired? c
690
+
691
+ @http.max_requests = 10
692
+ assert @http.expired? c
693
+
694
+ c.requests = 9
695
+ refute @http.expired? c
696
+ end
697
+
698
+ def test_finish
699
+ c = basic_connection
700
+ c.requests = 5
701
+
702
+ @http.finish c
703
+
704
+ refute c.http.started?
705
+ assert c.http.finished?
706
+
707
+ assert_equal 0, c.requests
708
+ assert_equal Net::HTTP::Persistent::EPOCH, c.last_use
709
+ end
710
+
711
+ def test_finish_io_error
712
+ c = basic_connection
713
+ def (c.http).finish; @finished += 1; raise IOError end
714
+ c.requests = 5
715
+
716
+ @http.finish c
717
+
718
+ refute c.http.started?
719
+ assert c.http.finished?
720
+ end
721
+
722
+ def test_finish_ssl_no_session_reuse
723
+ http = Net::HTTP.new 'localhost', 443, ssl: true
724
+ http.instance_variable_set :@ssl_session, :something
725
+
726
+ c = Net::HTTP::Persistent::Connection.allocate
727
+ c.instance_variable_set :@http, http
728
+
729
+ @http.reuse_ssl_sessions = false
730
+
731
+ @http.finish c
732
+
733
+ assert_nil c.http.instance_variable_get :@ssl_session
734
+ end
735
+
736
+ def test_http_version
737
+ assert_nil @http.http_version @uri
738
+
739
+ connection
740
+
741
+ @http.request @uri
742
+
743
+ assert_equal '1.1', @http.http_version(@uri)
744
+ end
745
+
746
+ def test_idempotent_eh
747
+ assert @http.idempotent? Net::HTTP::Delete.new '/'
748
+ assert @http.idempotent? Net::HTTP::Get.new '/'
749
+ assert @http.idempotent? Net::HTTP::Head.new '/'
750
+ assert @http.idempotent? Net::HTTP::Options.new '/'
751
+ assert @http.idempotent? Net::HTTP::Put.new '/'
752
+ assert @http.idempotent? Net::HTTP::Trace.new '/'
753
+
754
+ assert @http.idempotent? Net::HTTPGenericRequest.new('DELETE', false, true, '/')
755
+ assert @http.idempotent? Net::HTTPGenericRequest.new('GET', false, true, '/')
756
+ assert @http.idempotent? Net::HTTPGenericRequest.new('HEAD', false, false, '/')
757
+ assert @http.idempotent? Net::HTTPGenericRequest.new('OPTIONS', false, false, '/')
758
+ assert @http.idempotent? Net::HTTPGenericRequest.new('PUT', true, true, '/')
759
+ assert @http.idempotent? Net::HTTPGenericRequest.new('TRACE', false, true, '/')
760
+
761
+ refute @http.idempotent? Net::HTTP::Post.new '/'
762
+
763
+ refute @http.idempotent? Net::HTTPGenericRequest.new('POST', true, true, '/')
764
+ end
765
+
766
+ def test_normalize_uri
767
+ assert_equal 'http://example', @http.normalize_uri('example')
768
+ assert_equal 'http://example', @http.normalize_uri('http://example')
769
+ assert_equal 'https://example', @http.normalize_uri('https://example')
770
+ end
771
+
772
+ def test_override_haeders
773
+ assert_empty @http.override_headers
774
+
775
+ @http.override_headers['User-Agent'] = 'MyCustomAgent'
776
+
777
+ expected = { 'User-Agent' => 'MyCustomAgent' }
778
+
779
+ assert_equal expected, @http.override_headers
780
+ end
781
+
782
+ def test_pipeline
783
+ skip 'net-http-pipeline not installed' unless defined?(Net::HTTP::Pipeline)
784
+
785
+ cached = basic_connection
786
+ cached.http.start
787
+
788
+ requests = [
789
+ Net::HTTP::Get.new((@uri + '1').request_uri),
790
+ Net::HTTP::Get.new((@uri + '2').request_uri),
791
+ ]
792
+
793
+ responses = @http.pipeline @uri, requests
794
+
795
+ assert_equal 2, responses.length
796
+ assert_equal '/1', responses.first
797
+ assert_equal '/2', responses.last
798
+ end
799
+
800
+ def test_private_key_equals
801
+ @http.private_key = :private_key
802
+
803
+ assert_equal :private_key, @http.private_key
804
+ assert_equal 1, @http.ssl_generation
805
+ end
806
+
807
+ def test_proxy_equals_env
808
+ ENV['http_proxy'] = 'proxy.example'
809
+
810
+ @http.proxy = :ENV
811
+
812
+ assert_equal URI.parse('http://proxy.example'), @http.proxy_uri
813
+
814
+ assert_equal 1, @http.generation, 'generation'
815
+ assert_equal 1, @http.ssl_generation, 'ssl_generation'
816
+ end
817
+
818
+ def test_proxy_equals_nil
819
+ @http.proxy = nil
820
+
821
+ assert_nil @http.proxy_uri
822
+
823
+ assert_equal 1, @http.generation, 'generation'
824
+ assert_equal 1, @http.ssl_generation, 'ssl_generation'
825
+ end
826
+
827
+ def test_proxy_equals_uri
828
+ proxy_uri = URI.parse 'http://proxy.example'
829
+
830
+ @http.proxy = proxy_uri
831
+
832
+ assert_equal proxy_uri, @http.proxy_uri
833
+ end
834
+
835
+ def test_proxy_from_env
836
+ ENV['http_proxy'] = 'proxy.example'
837
+ ENV['http_proxy_user'] = 'johndoe'
838
+ ENV['http_proxy_pass'] = 'muffins'
839
+ ENV['NO_PROXY'] = 'localhost,example.com'
840
+
841
+ uri = @http.proxy_from_env
842
+
843
+ expected = URI.parse 'http://proxy.example'
844
+ expected.user = 'johndoe'
845
+ expected.password = 'muffins'
846
+ expected.query = 'no_proxy=localhost%2Cexample.com'
847
+
848
+ assert_equal expected, uri
849
+ end
850
+
851
+ def test_proxy_from_env_lower
852
+ ENV['http_proxy'] = 'proxy.example'
853
+ ENV['http_proxy_user'] = 'johndoe'
854
+ ENV['http_proxy_pass'] = 'muffins'
855
+ ENV['no_proxy'] = 'localhost,example.com'
856
+
857
+ uri = @http.proxy_from_env
858
+
859
+ expected = URI.parse 'http://proxy.example'
860
+ expected.user = 'johndoe'
861
+ expected.password = 'muffins'
862
+ expected.query = 'no_proxy=localhost%2Cexample.com'
863
+
864
+ assert_equal expected, uri
865
+ end
866
+
867
+ def test_proxy_from_env_nil
868
+ uri = @http.proxy_from_env
869
+
870
+ assert_nil uri
871
+
872
+ ENV['http_proxy'] = ''
873
+
874
+ uri = @http.proxy_from_env
875
+
876
+ assert_nil uri
877
+ end
878
+
879
+ def test_proxy_from_env_no_proxy_star
880
+ uri = @http.proxy_from_env
881
+
882
+ assert_nil uri
883
+
884
+ ENV['http_proxy'] = 'proxy.example'
885
+ ENV['no_proxy'] = '*'
886
+
887
+ uri = @http.proxy_from_env
888
+
889
+ assert_nil uri
890
+ end
891
+
892
+ def test_proxy_bypass
893
+ ENV['http_proxy'] = 'proxy.example'
894
+ ENV['no_proxy'] = 'localhost,example.com:80'
895
+
896
+ @http.proxy = :ENV
897
+
898
+ assert @http.proxy_bypass? 'localhost', 80
899
+ assert @http.proxy_bypass? 'localhost', 443
900
+ assert @http.proxy_bypass? 'LOCALHOST', 80
901
+ assert @http.proxy_bypass? 'example.com', 80
902
+ refute @http.proxy_bypass? 'example.com', 443
903
+ assert @http.proxy_bypass? 'www.example.com', 80
904
+ refute @http.proxy_bypass? 'www.example.com', 443
905
+ assert @http.proxy_bypass? 'endingexample.com', 80
906
+ refute @http.proxy_bypass? 'example.org', 80
907
+ end
908
+
909
+ def test_proxy_bypass_space
910
+ ENV['http_proxy'] = 'proxy.example'
911
+ ENV['no_proxy'] = 'localhost, example.com'
912
+
913
+ @http.proxy = :ENV
914
+
915
+ assert @http.proxy_bypass? 'example.com', 80
916
+ refute @http.proxy_bypass? 'example.org', 80
917
+ end
918
+
919
+ def test_proxy_bypass_trailing
920
+ ENV['http_proxy'] = 'proxy.example'
921
+ ENV['no_proxy'] = 'localhost,example.com,'
922
+
923
+ @http.proxy = :ENV
924
+
925
+ assert @http.proxy_bypass? 'example.com', 80
926
+ refute @http.proxy_bypass? 'example.org', 80
927
+ end
928
+
929
+ def test_proxy_bypass_double_comma
930
+ ENV['http_proxy'] = 'proxy.example'
931
+ ENV['no_proxy'] = 'localhost,,example.com'
932
+
933
+ @http.proxy = :ENV
934
+
935
+ assert @http.proxy_bypass? 'example.com', 80
936
+ refute @http.proxy_bypass? 'example.org', 80
937
+ end
938
+
939
+ def test_reconnect
940
+ result = @http.reconnect
941
+
942
+ assert_equal 1, result
943
+ end
944
+
945
+ def test_reconnect_ssl
946
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
947
+
948
+ @uri = URI 'https://example.com'
949
+ now = Time.now
950
+
951
+ ssl_http = ssl_connection
952
+
953
+ def (ssl_http.http).finish
954
+ @started = 0
955
+ end
956
+
957
+ used1 = @http.connection_for @uri do |c|
958
+ c.requests = 1
959
+ c.last_use = now
960
+ c
961
+ end
962
+
963
+ assert_equal OpenSSL::SSL::VERIFY_PEER, used1.http.verify_mode
964
+
965
+ @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
966
+ @http.reconnect_ssl
967
+
968
+ used2 = @http.connection_for @uri do |c|
969
+ c
970
+ end
971
+
972
+ assert_same used1, used2
973
+
974
+ assert_equal OpenSSL::SSL::VERIFY_NONE, used2.http.verify_mode,
975
+ 'verify mode must change'
976
+ assert_equal 0, used2.requests
977
+ assert_equal Net::HTTP::Persistent::EPOCH, used2.last_use
978
+ end
979
+
980
+ def test_request
981
+ @http.override_headers['user-agent'] = 'test ua'
982
+ @http.headers['accept'] = 'text/*'
983
+ c = connection
984
+
985
+ res = @http.request @uri
986
+ req = c.http.req
987
+
988
+ assert_kind_of Net::HTTPResponse, res
989
+
990
+ assert_kind_of Net::HTTP::Get, req
991
+ assert_equal '/path', req.path
992
+
993
+ assert_equal 'test ua', req['user-agent']
994
+ assert_match %r%text/\*%, req['accept']
995
+
996
+ assert_equal 'keep-alive', req['connection']
997
+ assert_equal '30', req['keep-alive']
998
+
999
+ assert_in_delta Time.now, c.last_use
1000
+
1001
+ assert_equal 1, c.requests
1002
+ end
1003
+
1004
+ def test_request_ETIMEDOUT
1005
+ c = basic_connection
1006
+ def (c.http).request(*a) raise Errno::ETIMEDOUT, "timed out" end
1007
+
1008
+ e = assert_raises Net::HTTP::Persistent::Error do
1009
+ @http.request @uri
1010
+ end
1011
+
1012
+ assert_equal 0, c.requests
1013
+ assert_match %r%too many connection resets%, e.message
1014
+ end
1015
+
1016
+ def test_request_bad_response
1017
+ c = basic_connection
1018
+ def (c.http).request(*a) raise Net::HTTPBadResponse end
1019
+
1020
+ e = assert_raises Net::HTTP::Persistent::Error do
1021
+ @http.request @uri
1022
+ end
1023
+
1024
+ assert_equal 0, c.requests
1025
+ assert_match %r%too many bad responses%, e.message
1026
+ end
1027
+
1028
+ def test_request_bad_response_retry
1029
+ c = basic_connection
1030
+ def (c.http).request(*a)
1031
+ raise Net::HTTPBadResponse
1032
+ end
1033
+
1034
+ assert_raises Net::HTTP::Persistent::Error do
1035
+ @http.request @uri
1036
+ end
1037
+
1038
+ assert c.http.finished?
1039
+ end
1040
+
1041
+ def test_request_bad_response_unsafe
1042
+ c = basic_connection
1043
+ def (c.http).request(*a)
1044
+ if instance_variable_defined? :@request then
1045
+ raise 'POST must not be retried'
1046
+ else
1047
+ @request = true
1048
+ raise Net::HTTPBadResponse
1049
+ end
1050
+ end
1051
+
1052
+ e = assert_raises Net::HTTP::Persistent::Error do
1053
+ @http.request @uri, Net::HTTP::Post.new(@uri.path)
1054
+ end
1055
+
1056
+ assert_equal 0, c.requests
1057
+ assert_match %r%too many bad responses%, e.message
1058
+ end
1059
+
1060
+ def test_request_block
1061
+ @http.headers['user-agent'] = 'test ua'
1062
+ c = connection
1063
+ body = nil
1064
+
1065
+ res = @http.request @uri do |r|
1066
+ body = r.read_body
1067
+ end
1068
+
1069
+ req = c.http.req
1070
+
1071
+ assert_kind_of Net::HTTPResponse, res
1072
+ refute_nil body
1073
+
1074
+ assert_kind_of Net::HTTP::Get, req
1075
+ assert_equal '/path', req.path
1076
+ assert_equal 'keep-alive', req['connection']
1077
+ assert_equal '30', req['keep-alive']
1078
+ assert_match %r%test ua%, req['user-agent']
1079
+
1080
+ assert_equal 1, c.requests
1081
+ end
1082
+
1083
+ def test_request_close_1_0
1084
+ c = connection
1085
+
1086
+ class << c.http
1087
+ remove_method :request
1088
+ end
1089
+
1090
+ def (c.http).request req
1091
+ @req = req
1092
+ r = Net::HTTPResponse.allocate
1093
+ r.instance_variable_set :@header, {}
1094
+ def r.http_version() '1.0' end
1095
+ def r.read_body() :read_body end
1096
+ yield r if block_given?
1097
+ r
1098
+ end
1099
+
1100
+ request = Net::HTTP::Get.new @uri.request_uri
1101
+
1102
+ res = @http.request @uri, request
1103
+ req = c.http.req
1104
+
1105
+ assert_kind_of Net::HTTPResponse, res
1106
+
1107
+ assert_kind_of Net::HTTP::Get, req
1108
+ assert_equal '/path', req.path
1109
+ assert_equal 'keep-alive', req['connection']
1110
+ assert_equal '30', req['keep-alive']
1111
+
1112
+ assert c.http.finished?
1113
+ end
1114
+
1115
+ def test_request_connection_close_request
1116
+ c = connection
1117
+
1118
+ request = Net::HTTP::Get.new @uri.request_uri
1119
+ request['connection'] = 'close'
1120
+
1121
+ res = @http.request @uri, request
1122
+ req = c.http.req
1123
+
1124
+ assert_kind_of Net::HTTPResponse, res
1125
+
1126
+ assert_kind_of Net::HTTP::Get, req
1127
+ assert_equal '/path', req.path
1128
+ assert_equal 'close', req['connection']
1129
+ assert_nil req['keep-alive']
1130
+
1131
+ assert c.http.finished?
1132
+ end
1133
+
1134
+ def test_request_connection_close_response
1135
+ c = connection
1136
+
1137
+ class << c.http
1138
+ remove_method :request
1139
+ end
1140
+
1141
+ def (c.http).request req
1142
+ @req = req
1143
+ r = Net::HTTPResponse.allocate
1144
+ r.instance_variable_set :@header, {}
1145
+ r['connection'] = 'close'
1146
+ def r.http_version() '1.1' end
1147
+ def r.read_body() :read_body end
1148
+ yield r if block_given?
1149
+ r
1150
+ end
1151
+
1152
+ request = Net::HTTP::Get.new @uri.request_uri
1153
+
1154
+ res = @http.request @uri, request
1155
+ req = c.http.req
1156
+
1157
+ assert_kind_of Net::HTTPResponse, res
1158
+
1159
+ assert_kind_of Net::HTTP::Get, req
1160
+ assert_equal '/path', req.path
1161
+ assert_equal 'keep-alive', req['connection']
1162
+ assert_equal '30', req['keep-alive']
1163
+
1164
+ assert c.http.finished?
1165
+ end
1166
+
1167
+ def test_request_exception
1168
+ c = basic_connection
1169
+ def (c.http).request(*a)
1170
+ raise Exception, "very bad things happened"
1171
+ end
1172
+
1173
+ assert_raises Exception do
1174
+ @http.request @uri
1175
+ end
1176
+
1177
+ assert_equal 0, c.requests
1178
+ assert c.http.finished?
1179
+ end
1180
+
1181
+ def test_request_invalid
1182
+ c = basic_connection
1183
+ def (c.http).request(*a) raise Errno::EINVAL, "write" end
1184
+
1185
+ e = assert_raises Net::HTTP::Persistent::Error do
1186
+ @http.request @uri
1187
+ end
1188
+
1189
+ assert_equal 0, c.requests
1190
+ assert_match %r%too many connection resets%, e.message
1191
+ end
1192
+
1193
+ def test_request_post
1194
+ c = connection
1195
+
1196
+ post = Net::HTTP::Post.new @uri.path
1197
+
1198
+ @http.request @uri, post
1199
+ req = c.http.req
1200
+
1201
+ assert_same post, req
1202
+ end
1203
+
1204
+ def test_request_reset
1205
+ c = basic_connection
1206
+ def (c.http).request(*a) raise Errno::ECONNRESET end
1207
+
1208
+ e = assert_raises Net::HTTP::Persistent::Error do
1209
+ @http.request @uri
1210
+ end
1211
+
1212
+ assert_equal 0, c.requests
1213
+ assert_match %r%too many connection resets%, e.message
1214
+ end
1215
+
1216
+ def test_request_reset_retry
1217
+ c = basic_connection
1218
+ c.last_use = Time.now
1219
+
1220
+ def (c.http).request(*a)
1221
+ raise Errno::ECONNRESET
1222
+ end
1223
+
1224
+ assert_raises Net::HTTP::Persistent::Error do
1225
+ @http.request @uri
1226
+ end
1227
+
1228
+ refute (c.http).reset?
1229
+ assert (c.http).finished?
1230
+ end
1231
+
1232
+ def test_request_reset_unsafe
1233
+ c = basic_connection
1234
+ def (c.http).request(*a)
1235
+ if instance_variable_defined? :@request then
1236
+ raise 'POST must not be retried'
1237
+ else
1238
+ @request = true
1239
+ raise Errno::ECONNRESET
1240
+ end
1241
+ end
1242
+
1243
+ e = assert_raises Net::HTTP::Persistent::Error do
1244
+ @http.request @uri, Net::HTTP::Post.new(@uri.path)
1245
+ end
1246
+
1247
+ assert_equal 0, c.requests
1248
+ assert_match %r%too many connection resets%, e.message
1249
+ end
1250
+
1251
+ def test_request_ssl_error
1252
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1253
+
1254
+ uri = URI.parse 'https://example.com/path'
1255
+ @http.connection_for uri do |c|
1256
+ def (c.http).request(*)
1257
+ raise OpenSSL::SSL::SSLError, "SSL3_WRITE_PENDING:bad write retry"
1258
+ end
1259
+
1260
+ e = assert_raises Net::HTTP::Persistent::Error do
1261
+ @http.request uri
1262
+ end
1263
+ assert_match %r%bad write retry%, e.message
1264
+ end
1265
+ end
1266
+
1267
+ def test_request_setup
1268
+ @http.override_headers['user-agent'] = 'test ua'
1269
+ @http.headers['accept'] = 'text/*'
1270
+
1271
+ input = Net::HTTP::Post.new '/path'
1272
+
1273
+ req = @http.request_setup input
1274
+
1275
+ assert_same input, req
1276
+ assert_equal '/path', req.path
1277
+
1278
+ assert_equal 'test ua', req['user-agent']
1279
+ assert_match %r%text/\*%, req['accept']
1280
+
1281
+ assert_equal 'keep-alive', req['connection']
1282
+ assert_equal '30', req['keep-alive']
1283
+ end
1284
+
1285
+ def test_request_string
1286
+ @http.override_headers['user-agent'] = 'test ua'
1287
+ @http.headers['accept'] = 'text/*'
1288
+ c = connection
1289
+
1290
+ res = @http.request @uri.to_s
1291
+ req = c.http.req
1292
+
1293
+ assert_kind_of Net::HTTPResponse, res
1294
+
1295
+ assert_kind_of Net::HTTP::Get, req
1296
+ assert_equal '/path', req.path
1297
+
1298
+ assert_equal 1, c.requests
1299
+ end
1300
+
1301
+ def test_request_setup_uri
1302
+ uri = @uri + '?a=b'
1303
+
1304
+ req = @http.request_setup uri
1305
+
1306
+ assert_kind_of Net::HTTP::Get, req
1307
+ assert_equal '/path?a=b', req.path
1308
+ end
1309
+
1310
+ def test_request_failed
1311
+ c = basic_connection
1312
+ c.requests = 1
1313
+ c.last_use = Time.now
1314
+
1315
+ original = nil
1316
+
1317
+ begin
1318
+ raise 'original'
1319
+ rescue => original
1320
+ end
1321
+
1322
+ req = Net::HTTP::Get.new '/'
1323
+
1324
+ e = assert_raises Net::HTTP::Persistent::Error do
1325
+ @http.request_failed original, req, c
1326
+ end
1327
+
1328
+ assert_match "too many connection resets (due to original - RuntimeError)",
1329
+ e.message
1330
+
1331
+ assert_equal original.backtrace, e.backtrace
1332
+ end
1333
+
1334
+ def test_reset
1335
+ c = basic_connection
1336
+ c.http.start
1337
+ c.last_use = Time.now
1338
+ c.requests = 5
1339
+
1340
+ @http.reset c
1341
+
1342
+ assert c.http.started?
1343
+ assert c.http.finished?
1344
+ assert c.http.reset?
1345
+ assert_equal 0, c.requests
1346
+ assert_equal Net::HTTP::Persistent::EPOCH, c.last_use
1347
+ end
1348
+
1349
+ def test_reset_host_down
1350
+ c = basic_connection
1351
+ c.last_use = Time.now
1352
+ def (c.http).start; raise Errno::EHOSTDOWN end
1353
+ c.requests = 5
1354
+
1355
+ e = assert_raises Net::HTTP::Persistent::Error do
1356
+ @http.reset c
1357
+ end
1358
+
1359
+ assert_match %r%host down%, e.message
1360
+ assert_match __FILE__, e.backtrace.first
1361
+ end
1362
+
1363
+ def test_reset_io_error
1364
+ c = basic_connection
1365
+ c.last_use = Time.now
1366
+ c.requests = 5
1367
+
1368
+ @http.reset c
1369
+
1370
+ assert c.http.started?
1371
+ assert c.http.finished?
1372
+ end
1373
+
1374
+ def test_reset_refused
1375
+ c = basic_connection
1376
+ c.last_use = Time.now
1377
+ def (c.http).start; raise Errno::ECONNREFUSED end
1378
+ c.requests = 5
1379
+
1380
+ e = assert_raises Net::HTTP::Persistent::Error do
1381
+ @http.reset c
1382
+ end
1383
+
1384
+ assert_match %r%connection refused%, e.message
1385
+ assert_match __FILE__, e.backtrace.first
1386
+ end
1387
+
1388
+ def test_retry_change_requests_equals
1389
+ get = Net::HTTP::Get.new('/')
1390
+ post = Net::HTTP::Post.new('/')
1391
+
1392
+ refute @http.retry_change_requests
1393
+
1394
+ refute @http.can_retry?(get)
1395
+ refute @http.can_retry?(post)
1396
+
1397
+ @http.retry_change_requests = true
1398
+
1399
+ assert @http.retry_change_requests
1400
+
1401
+ refute @http.can_retry?(get)
1402
+ assert @http.can_retry?(post)
1403
+ end
1404
+
1405
+ def test_shutdown
1406
+ c = connection
1407
+
1408
+ orig = @http
1409
+ @http = Net::HTTP::Persistent.new name: 'name'
1410
+ c2 = connection
1411
+
1412
+ orig.shutdown
1413
+
1414
+ @http = orig
1415
+
1416
+ assert c.http.finished?, 'last-generation connection must be finished'
1417
+ refute c2.http.finished?, 'present generation connection must not be finished'
1418
+ end
1419
+
1420
+ def test_ssl
1421
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1422
+
1423
+ @http.verify_callback = :callback
1424
+ c = Net::HTTP.new 'localhost', 80
1425
+
1426
+ @http.ssl c
1427
+
1428
+ assert c.use_ssl?
1429
+ assert_equal OpenSSL::SSL::VERIFY_PEER, c.verify_mode
1430
+ assert_kind_of OpenSSL::X509::Store, c.cert_store
1431
+ assert_nil c.verify_callback
1432
+ end
1433
+
1434
+ def test_ssl_ca_file
1435
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1436
+
1437
+ @http.ca_file = 'ca_file'
1438
+ @http.verify_callback = :callback
1439
+ c = Net::HTTP.new 'localhost', 80
1440
+
1441
+ @http.ssl c
1442
+
1443
+ assert c.use_ssl?
1444
+ assert_equal OpenSSL::SSL::VERIFY_PEER, c.verify_mode
1445
+ assert_equal :callback, c.verify_callback
1446
+ end
1447
+
1448
+ def test_ssl_ca_path
1449
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1450
+
1451
+ @http.ca_path = 'ca_path'
1452
+ @http.verify_callback = :callback
1453
+ c = Net::HTTP.new 'localhost', 80
1454
+
1455
+ @http.ssl c
1456
+
1457
+ assert c.use_ssl?
1458
+ assert_equal OpenSSL::SSL::VERIFY_PEER, c.verify_mode
1459
+ assert_equal :callback, c.verify_callback
1460
+ end
1461
+
1462
+ def test_ssl_cert_store
1463
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1464
+
1465
+ store = OpenSSL::X509::Store.new
1466
+ @http.cert_store = store
1467
+
1468
+ c = Net::HTTP.new 'localhost', 80
1469
+
1470
+ @http.ssl c
1471
+
1472
+ assert c.use_ssl?
1473
+ assert_equal store, c.cert_store
1474
+ end
1475
+
1476
+ def test_ssl_cert_store_default
1477
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1478
+
1479
+ @http.verify_mode = OpenSSL::SSL::VERIFY_PEER
1480
+
1481
+ c = Net::HTTP.new 'localhost', 80
1482
+
1483
+ @http.ssl c
1484
+
1485
+ assert c.use_ssl?
1486
+ assert c.cert_store
1487
+ end
1488
+
1489
+ def test_ssl_certificate
1490
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1491
+
1492
+ @http.certificate = :cert
1493
+ @http.private_key = :key
1494
+ c = Net::HTTP.new 'localhost', 80
1495
+
1496
+ @http.ssl c
1497
+
1498
+ assert c.use_ssl?
1499
+ assert_equal :cert, c.cert
1500
+ assert_equal :key, c.key
1501
+ end
1502
+
1503
+ def test_ssl_verify_mode
1504
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1505
+
1506
+ @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
1507
+ c = Net::HTTP.new 'localhost', 80
1508
+
1509
+ @http.ssl c
1510
+
1511
+ assert c.use_ssl?
1512
+ assert_equal OpenSSL::SSL::VERIFY_NONE, c.verify_mode
1513
+ end
1514
+
1515
+ def test_ssl_warning
1516
+ skip 'OpenSSL is missing' unless HAVE_OPENSSL
1517
+
1518
+ begin
1519
+ orig_verify_peer = OpenSSL::SSL::VERIFY_PEER
1520
+ OpenSSL::SSL.send :remove_const, :VERIFY_PEER
1521
+ OpenSSL::SSL.send :const_set, :VERIFY_PEER, OpenSSL::SSL::VERIFY_NONE
1522
+
1523
+ c = Net::HTTP.new 'localhost', 80
1524
+
1525
+ out, err = capture_io do
1526
+ @http.ssl c
1527
+ end
1528
+
1529
+ assert_empty out
1530
+
1531
+ assert_match %r%localhost:80%, err
1532
+ assert_match %r%I_KNOW_THAT_OPENSSL%, err
1533
+
1534
+ Object.send :const_set, :I_KNOW_THAT_OPENSSL_VERIFY_PEER_EQUALS_VERIFY_NONE_IS_WRONG, nil
1535
+
1536
+ assert_silent do
1537
+ @http.ssl c
1538
+ end
1539
+ ensure
1540
+ OpenSSL::SSL.send :remove_const, :VERIFY_PEER
1541
+ OpenSSL::SSL.send :const_set, :VERIFY_PEER, orig_verify_peer
1542
+ if Object.const_defined?(:I_KNOW_THAT_OPENSSL_VERIFY_PEER_EQUALS_VERIFY_NONE_IS_WRONG) then
1543
+ Object.send :remove_const, :I_KNOW_THAT_OPENSSL_VERIFY_PEER_EQUALS_VERIFY_NONE_IS_WRONG
1544
+ end
1545
+ end
1546
+ end
1547
+
1548
+ def test_ssl_timeout_equals
1549
+ @http.ssl_timeout = :ssl_timeout
1550
+
1551
+ assert_equal :ssl_timeout, @http.ssl_timeout
1552
+ assert_equal 1, @http.ssl_generation
1553
+ end
1554
+
1555
+ def test_ssl_version_equals
1556
+ @http.ssl_version = :ssl_version
1557
+
1558
+ assert_equal :ssl_version, @http.ssl_version
1559
+ assert_equal 1, @http.ssl_generation
1560
+ end
1561
+
1562
+ def test_min_version_equals
1563
+ @http.min_version = :min_version
1564
+
1565
+ assert_equal :min_version, @http.min_version
1566
+ assert_equal 1, @http.ssl_generation
1567
+ end
1568
+
1569
+ def test_max_version_equals
1570
+ @http.max_version = :max_version
1571
+
1572
+ assert_equal :max_version, @http.max_version
1573
+ assert_equal 1, @http.ssl_generation
1574
+ end
1575
+
1576
+ def test_start
1577
+ c = basic_connection
1578
+ c = c.http
1579
+
1580
+ @http.socket_options << [Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, 1]
1581
+ @http.debug_output = $stderr
1582
+ @http.open_timeout = 6
1583
+
1584
+ @http.start c
1585
+
1586
+ assert_equal $stderr, c.debug_output
1587
+ assert_equal 6, c.open_timeout
1588
+
1589
+ socket = c.instance_variable_get :@socket
1590
+
1591
+ expected = []
1592
+ expected << [Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1] if
1593
+ Socket.const_defined? :TCP_NODELAY
1594
+ expected << [Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, 1]
1595
+
1596
+ assert_equal expected, socket.io.instance_variable_get(:@setsockopts)
1597
+ end
1598
+
1599
+ def test_verify_callback_equals
1600
+ @http.verify_callback = :verify_callback
1601
+
1602
+ assert_equal :verify_callback, @http.verify_callback
1603
+ assert_equal 1, @http.ssl_generation
1604
+ end
1605
+
1606
+ def test_verify_depth_equals
1607
+ @http.verify_depth = :verify_depth
1608
+
1609
+ assert_equal :verify_depth, @http.verify_depth
1610
+ assert_equal 1, @http.ssl_generation
1611
+ end
1612
+
1613
+ def test_verify_mode_equals
1614
+ @http.verify_mode = :verify_mode
1615
+
1616
+ assert_equal :verify_mode, @http.verify_mode
1617
+ assert_equal 1, @http.ssl_generation
1618
+ end
1619
+
1620
+ end
1621
+