rubygems-update 3.5.5 → 3.6.9

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 (413) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +606 -1
  3. data/CODE_OF_CONDUCT.md +79 -28
  4. data/Manifest.txt +114 -73
  5. data/README.md +16 -11
  6. data/bundler/CHANGELOG.md +506 -6
  7. data/bundler/README.md +2 -2
  8. data/bundler/bundler.gemspec +2 -2
  9. data/bundler/lib/bundler/build_metadata.rb +2 -2
  10. data/bundler/lib/bundler/checksum.rb +22 -12
  11. data/bundler/lib/bundler/cli/add.rb +3 -1
  12. data/bundler/lib/bundler/cli/binstubs.rb +1 -1
  13. data/bundler/lib/bundler/cli/check.rb +3 -3
  14. data/bundler/lib/bundler/cli/console.rb +8 -10
  15. data/bundler/lib/bundler/cli/doctor/diagnose.rb +167 -0
  16. data/bundler/lib/bundler/cli/doctor/ssl.rb +249 -0
  17. data/bundler/lib/bundler/cli/doctor.rb +27 -151
  18. data/bundler/lib/bundler/cli/exec.rb +1 -0
  19. data/bundler/lib/bundler/cli/fund.rb +1 -1
  20. data/bundler/lib/bundler/cli/gem.rb +13 -17
  21. data/bundler/lib/bundler/cli/info.rb +6 -6
  22. data/bundler/lib/bundler/cli/inject.rb +3 -3
  23. data/bundler/lib/bundler/cli/install.rb +14 -5
  24. data/bundler/lib/bundler/cli/issue.rb +3 -3
  25. data/bundler/lib/bundler/cli/lock.rb +32 -11
  26. data/bundler/lib/bundler/cli/outdated.rb +22 -22
  27. data/bundler/lib/bundler/cli/plugin.rb +3 -2
  28. data/bundler/lib/bundler/cli/pristine.rb +1 -1
  29. data/bundler/lib/bundler/cli/show.rb +3 -3
  30. data/bundler/lib/bundler/cli.rb +51 -107
  31. data/bundler/lib/bundler/compact_index_client/cache.rb +48 -73
  32. data/bundler/lib/bundler/compact_index_client/cache_file.rb +0 -5
  33. data/bundler/lib/bundler/compact_index_client/parser.rb +84 -0
  34. data/bundler/lib/bundler/compact_index_client/updater.rb +2 -12
  35. data/bundler/lib/bundler/compact_index_client.rb +51 -80
  36. data/bundler/lib/bundler/constants.rb +8 -1
  37. data/bundler/lib/bundler/current_ruby.rb +23 -33
  38. data/bundler/lib/bundler/definition.rb +485 -313
  39. data/bundler/lib/bundler/dependency.rb +92 -46
  40. data/bundler/lib/bundler/dsl.rb +135 -101
  41. data/bundler/lib/bundler/endpoint_specification.rb +30 -3
  42. data/bundler/lib/bundler/env.rb +1 -1
  43. data/bundler/lib/bundler/environment_preserver.rb +5 -23
  44. data/bundler/lib/bundler/errors.rb +53 -5
  45. data/bundler/lib/bundler/feature_flag.rb +3 -6
  46. data/bundler/lib/bundler/fetcher/compact_index.rb +16 -25
  47. data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
  48. data/bundler/lib/bundler/fetcher.rb +14 -7
  49. data/bundler/lib/bundler/force_platform.rb +0 -2
  50. data/bundler/lib/bundler/friendly_errors.rb +1 -1
  51. data/bundler/lib/bundler/gem_helper.rb +1 -1
  52. data/bundler/lib/bundler/gem_helpers.rb +36 -19
  53. data/bundler/lib/bundler/gem_version_promoter.rb +42 -40
  54. data/bundler/lib/bundler/injector.rb +14 -16
  55. data/bundler/lib/bundler/inline.rb +42 -17
  56. data/bundler/lib/bundler/installer/gem_installer.rb +4 -3
  57. data/bundler/lib/bundler/installer/parallel_installer.rb +3 -2
  58. data/bundler/lib/bundler/installer/standalone.rb +2 -5
  59. data/bundler/lib/bundler/installer.rb +17 -41
  60. data/bundler/lib/bundler/lazy_specification.rb +117 -46
  61. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  62. data/bundler/lib/bundler/lockfile_parser.rb +18 -7
  63. data/bundler/lib/bundler/man/bundle-add.1 +44 -27
  64. data/bundler/lib/bundler/man/bundle-add.1.ronn +52 -23
  65. data/bundler/lib/bundler/man/bundle-binstubs.1 +9 -6
  66. data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +6 -3
  67. data/bundler/lib/bundler/man/bundle-cache.1 +32 -4
  68. data/bundler/lib/bundler/man/bundle-cache.1.ronn +31 -2
  69. data/bundler/lib/bundler/man/bundle-check.1 +7 -5
  70. data/bundler/lib/bundler/man/bundle-check.1.ronn +7 -2
  71. data/bundler/lib/bundler/man/bundle-clean.1 +3 -3
  72. data/bundler/lib/bundler/man/bundle-config.1 +11 -15
  73. data/bundler/lib/bundler/man/bundle-config.1.ronn +12 -15
  74. data/bundler/lib/bundler/man/bundle-console.1 +4 -6
  75. data/bundler/lib/bundler/man/bundle-console.1.ronn +2 -7
  76. data/bundler/lib/bundler/man/bundle-doctor.1 +4 -4
  77. data/bundler/lib/bundler/man/bundle-doctor.1.ronn +1 -1
  78. data/bundler/lib/bundler/man/bundle-env.1 +9 -0
  79. data/bundler/lib/bundler/man/bundle-env.1.ronn +10 -0
  80. data/bundler/lib/bundler/man/bundle-exec.1 +9 -6
  81. data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -3
  82. data/bundler/lib/bundler/man/bundle-fund.1 +22 -0
  83. data/bundler/lib/bundler/man/bundle-fund.1.ronn +25 -0
  84. data/bundler/lib/bundler/man/bundle-gem.1 +25 -7
  85. data/bundler/lib/bundler/man/bundle-gem.1.ronn +38 -6
  86. data/bundler/lib/bundler/man/bundle-help.1 +3 -3
  87. data/bundler/lib/bundler/man/bundle-info.1 +7 -4
  88. data/bundler/lib/bundler/man/bundle-info.1.ronn +6 -2
  89. data/bundler/lib/bundler/man/bundle-init.1 +5 -5
  90. data/bundler/lib/bundler/man/bundle-init.1.ronn +3 -2
  91. data/bundler/lib/bundler/man/bundle-inject.1 +12 -4
  92. data/bundler/lib/bundler/man/bundle-inject.1.ronn +9 -1
  93. data/bundler/lib/bundler/man/bundle-install.1 +19 -16
  94. data/bundler/lib/bundler/man/bundle-install.1.ronn +24 -20
  95. data/bundler/lib/bundler/man/bundle-issue.1 +45 -0
  96. data/bundler/lib/bundler/man/bundle-issue.1.ronn +37 -0
  97. data/bundler/lib/bundler/man/bundle-licenses.1 +9 -0
  98. data/bundler/lib/bundler/man/bundle-licenses.1.ronn +10 -0
  99. data/bundler/lib/bundler/man/bundle-list.1 +3 -3
  100. data/bundler/lib/bundler/man/bundle-list.1.ronn +4 -1
  101. data/bundler/lib/bundler/man/bundle-lock.1 +23 -8
  102. data/bundler/lib/bundler/man/bundle-lock.1.ronn +25 -4
  103. data/bundler/lib/bundler/man/bundle-open.1 +4 -4
  104. data/bundler/lib/bundler/man/bundle-open.1.ronn +2 -1
  105. data/bundler/lib/bundler/man/bundle-outdated.1 +10 -7
  106. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +8 -4
  107. data/bundler/lib/bundler/man/bundle-platform.1 +3 -3
  108. data/bundler/lib/bundler/man/bundle-plugin.1 +9 -6
  109. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +7 -3
  110. data/bundler/lib/bundler/man/bundle-pristine.1 +3 -3
  111. data/bundler/lib/bundler/man/bundle-pristine.1.ronn +1 -1
  112. data/bundler/lib/bundler/man/bundle-remove.1 +3 -3
  113. data/bundler/lib/bundler/man/bundle-remove.1.ronn +1 -1
  114. data/bundler/lib/bundler/man/bundle-show.1 +7 -4
  115. data/bundler/lib/bundler/man/bundle-show.1.ronn +4 -0
  116. data/bundler/lib/bundler/man/bundle-update.1 +15 -9
  117. data/bundler/lib/bundler/man/bundle-update.1.ronn +14 -6
  118. data/bundler/lib/bundler/man/bundle-version.1 +3 -3
  119. data/bundler/lib/bundler/man/bundle-viz.1 +6 -6
  120. data/bundler/lib/bundler/man/bundle-viz.1.ronn +7 -3
  121. data/bundler/lib/bundler/man/bundle.1 +3 -3
  122. data/bundler/lib/bundler/man/gemfile.5 +7 -5
  123. data/bundler/lib/bundler/man/gemfile.5.ronn +8 -2
  124. data/bundler/lib/bundler/man/index.txt +4 -0
  125. data/bundler/lib/bundler/match_metadata.rb +13 -0
  126. data/bundler/lib/bundler/materialization.rb +59 -0
  127. data/bundler/lib/bundler/mirror.rb +3 -3
  128. data/bundler/lib/bundler/plugin/api/source.rb +5 -4
  129. data/bundler/lib/bundler/plugin/events.rb +24 -0
  130. data/bundler/lib/bundler/plugin/index.rb +5 -1
  131. data/bundler/lib/bundler/plugin/installer/path.rb +26 -0
  132. data/bundler/lib/bundler/plugin/installer.rb +37 -17
  133. data/bundler/lib/bundler/plugin/source_list.rb +4 -4
  134. data/bundler/lib/bundler/plugin.rb +21 -2
  135. data/bundler/lib/bundler/process_lock.rb +10 -14
  136. data/bundler/lib/bundler/remote_specification.rb +6 -1
  137. data/bundler/lib/bundler/resolver/base.rb +14 -3
  138. data/bundler/lib/bundler/resolver/candidate.rb +18 -27
  139. data/bundler/lib/bundler/resolver/package.rb +20 -3
  140. data/bundler/lib/bundler/resolver/spec_group.rb +22 -27
  141. data/bundler/lib/bundler/resolver/strategy.rb +40 -0
  142. data/bundler/lib/bundler/resolver.rb +114 -50
  143. data/bundler/lib/bundler/retry.rb +1 -1
  144. data/bundler/lib/bundler/ruby_dsl.rb +12 -3
  145. data/bundler/lib/bundler/ruby_version.rb +7 -1
  146. data/bundler/lib/bundler/rubygems_ext.rb +282 -125
  147. data/bundler/lib/bundler/rubygems_gem_installer.rb +40 -5
  148. data/bundler/lib/bundler/rubygems_integration.rb +29 -67
  149. data/bundler/lib/bundler/runtime.rb +48 -35
  150. data/bundler/lib/bundler/self_manager.rb +27 -7
  151. data/bundler/lib/bundler/settings.rb +32 -21
  152. data/bundler/lib/bundler/setup.rb +6 -0
  153. data/bundler/lib/bundler/shared_helpers.rb +39 -21
  154. data/bundler/lib/bundler/source/gemspec.rb +1 -4
  155. data/bundler/lib/bundler/source/git/git_proxy.rb +23 -6
  156. data/bundler/lib/bundler/source/git.rb +113 -41
  157. data/bundler/lib/bundler/source/metadata.rb +4 -3
  158. data/bundler/lib/bundler/source/path.rb +7 -18
  159. data/bundler/lib/bundler/source/rubygems/remote.rb +12 -4
  160. data/bundler/lib/bundler/source/rubygems.rb +54 -48
  161. data/bundler/lib/bundler/source.rb +2 -0
  162. data/bundler/lib/bundler/source_list.rb +53 -7
  163. data/bundler/lib/bundler/spec_set.rb +187 -88
  164. data/bundler/lib/bundler/stub_specification.rb +29 -2
  165. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +77 -29
  166. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +1 -3
  167. data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -3
  168. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +15 -15
  169. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -7
  170. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
  171. data/bundler/lib/bundler/ui/shell.rb +24 -2
  172. data/bundler/lib/bundler/ui/silent.rb +12 -1
  173. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -3
  174. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +53 -3
  175. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  176. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +11 -0
  177. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +15 -13
  178. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +68 -30
  179. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +4 -24
  180. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +1 -0
  181. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb +42 -0
  182. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +20 -8
  183. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +17 -29
  184. data/bundler/lib/bundler/vendor/securerandom/COPYING +56 -0
  185. data/bundler/lib/bundler/vendor/securerandom/lib/securerandom.rb +102 -0
  186. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +3 -5
  187. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +11 -0
  188. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +1 -4
  189. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +2 -2
  190. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +2 -1
  191. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +9 -9
  192. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
  193. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +5 -21
  194. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  195. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  196. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +11 -0
  197. data/bundler/lib/bundler/vendor/uri/COPYING +56 -0
  198. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +43 -16
  199. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +3 -3
  200. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +1 -1
  201. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +28 -37
  202. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +2 -2
  203. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +16 -9
  204. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +26 -3
  205. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  206. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +9 -9
  207. data/bundler/lib/bundler/vendored_net_http.rb +20 -5
  208. data/bundler/lib/bundler/vendored_securerandom.rb +12 -0
  209. data/bundler/lib/bundler/vendored_timeout.rb +7 -3
  210. data/bundler/lib/bundler/vendored_uri.rb +18 -1
  211. data/bundler/lib/bundler/version.rb +1 -1
  212. data/bundler/lib/bundler/yaml_serializer.rb +12 -7
  213. data/bundler/lib/bundler.rb +89 -51
  214. data/{CONTRIBUTING.md → doc/rubygems/CONTRIBUTING.md} +10 -14
  215. data/{POLICIES.md → doc/rubygems/POLICIES.md} +81 -12
  216. data/exe/update_rubygems +1 -1
  217. data/lib/rubygems/basic_specification.rb +43 -10
  218. data/lib/rubygems/bundler_version_finder.rb +1 -1
  219. data/lib/rubygems/command.rb +1 -4
  220. data/lib/rubygems/command_manager.rb +5 -6
  221. data/lib/rubygems/commands/build_command.rb +2 -11
  222. data/lib/rubygems/commands/cleanup_command.rb +3 -13
  223. data/lib/rubygems/commands/contents_command.rb +17 -10
  224. data/lib/rubygems/commands/environment_command.rb +5 -0
  225. data/lib/rubygems/commands/exec_command.rb +18 -11
  226. data/lib/rubygems/commands/fetch_command.rb +14 -0
  227. data/lib/rubygems/commands/help_command.rb +2 -2
  228. data/lib/rubygems/commands/install_command.rb +0 -4
  229. data/lib/rubygems/commands/pristine_command.rb +30 -17
  230. data/lib/rubygems/commands/push_command.rb +31 -6
  231. data/lib/rubygems/commands/rdoc_command.rb +3 -10
  232. data/lib/rubygems/commands/rebuild_command.rb +262 -0
  233. data/lib/rubygems/commands/setup_command.rb +11 -16
  234. data/lib/rubygems/commands/sources_command.rb +2 -2
  235. data/lib/rubygems/commands/uninstall_command.rb +9 -4
  236. data/lib/rubygems/commands/unpack_command.rb +0 -6
  237. data/lib/rubygems/commands/update_command.rb +10 -17
  238. data/lib/rubygems/config_file.rb +45 -16
  239. data/lib/rubygems/core_ext/kernel_warn.rb +2 -6
  240. data/lib/rubygems/defaults.rb +6 -6
  241. data/lib/rubygems/dependency.rb +12 -16
  242. data/lib/rubygems/dependency_list.rb +1 -1
  243. data/lib/rubygems/deprecate.rb +79 -77
  244. data/lib/rubygems/errors.rb +2 -1
  245. data/lib/rubygems/exceptions.rb +2 -9
  246. data/lib/rubygems/ext/builder.rb +21 -8
  247. data/lib/rubygems/ext/cargo_builder.rb +12 -26
  248. data/lib/rubygems/ext/cmake_builder.rb +7 -2
  249. data/lib/rubygems/ext/configure_builder.rb +7 -2
  250. data/lib/rubygems/ext/ext_conf_builder.rb +9 -5
  251. data/lib/rubygems/ext/rake_builder.rb +7 -4
  252. data/lib/rubygems/gem_runner.rb +9 -0
  253. data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +1 -1
  254. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -1
  255. data/lib/rubygems/gemcutter_utilities.rb +52 -26
  256. data/lib/rubygems/gemspec_helpers.rb +19 -0
  257. data/lib/rubygems/install_update_options.rb +5 -0
  258. data/lib/rubygems/installer.rb +31 -40
  259. data/lib/rubygems/local_remote_options.rb +8 -8
  260. data/lib/rubygems/package/tar_header.rb +31 -4
  261. data/lib/rubygems/package/tar_reader/entry.rb +1 -5
  262. data/lib/rubygems/package/tar_writer.rb +5 -4
  263. data/lib/rubygems/package.rb +13 -8
  264. data/lib/rubygems/platform.rb +7 -5
  265. data/lib/rubygems/psych_tree.rb +4 -0
  266. data/lib/rubygems/query_utils.rb +2 -2
  267. data/lib/rubygems/rdoc.rb +16 -3
  268. data/lib/rubygems/remote_fetcher.rb +3 -4
  269. data/lib/rubygems/request.rb +5 -5
  270. data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
  271. data/lib/rubygems/request_set.rb +1 -1
  272. data/lib/rubygems/requirement.rb +16 -12
  273. data/lib/rubygems/resolver/activation_request.rb +1 -1
  274. data/lib/rubygems/resolver/api_set/gem_parser.rb +2 -5
  275. data/lib/rubygems/resolver/api_set.rb +13 -8
  276. data/lib/rubygems/resolver/best_set.rb +0 -28
  277. data/lib/rubygems/resolver/composed_set.rb +3 -3
  278. data/lib/rubygems/resolver/git_set.rb +0 -1
  279. data/lib/rubygems/resolver/index_set.rb +2 -2
  280. data/lib/rubygems/resolver/spec_specification.rb +7 -0
  281. data/lib/rubygems/resolver.rb +7 -7
  282. data/lib/rubygems/s3_uri_signer.rb +3 -3
  283. data/lib/rubygems/safe_marshal/reader.rb +31 -14
  284. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +29 -16
  285. data/lib/rubygems/safe_yaml.rb +10 -1
  286. data/lib/rubygems/security.rb +1 -1
  287. data/lib/rubygems/source/git.rb +22 -17
  288. data/lib/rubygems/source/installed.rb +3 -1
  289. data/lib/rubygems/source/local.rb +8 -4
  290. data/lib/rubygems/source/specific_file.rb +5 -3
  291. data/lib/rubygems/source.rb +10 -8
  292. data/lib/rubygems/source_list.rb +1 -1
  293. data/lib/rubygems/spec_fetcher.rb +47 -15
  294. data/lib/rubygems/specification.rb +107 -180
  295. data/lib/rubygems/specification_policy.rb +33 -13
  296. data/lib/rubygems/specification_record.rb +212 -0
  297. data/lib/rubygems/stub_specification.rb +32 -10
  298. data/lib/rubygems/target_rbconfig.rb +50 -0
  299. data/lib/rubygems/uninstaller.rb +42 -22
  300. data/lib/rubygems/uri.rb +6 -6
  301. data/lib/rubygems/util/licenses.rb +97 -1
  302. data/lib/rubygems/util.rb +1 -1
  303. data/lib/rubygems/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
  304. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/delegates/specification_provider.rb +11 -11
  305. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/action.rb +1 -1
  306. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
  307. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
  308. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
  309. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
  310. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/log.rb +1 -1
  311. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
  312. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
  313. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/vertex.rb +1 -1
  314. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph.rb +2 -2
  315. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/errors.rb +1 -1
  316. data/lib/rubygems/vendor/molinillo/lib/molinillo/gem_metadata.rb +6 -0
  317. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/modules/specification_provider.rb +2 -2
  318. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/modules/ui.rb +1 -1
  319. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/resolution.rb +4 -4
  320. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/resolver.rb +1 -1
  321. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/state.rb +1 -1
  322. data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo.rb +2 -2
  323. data/lib/rubygems/vendor/net-http/COPYING +56 -0
  324. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/generic_request.rb +9 -9
  325. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/header.rb +3 -3
  326. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/request.rb +3 -3
  327. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/requests.rb +35 -30
  328. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/response.rb +2 -2
  329. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/responses.rb +6 -6
  330. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/status.rb +1 -1
  331. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http.rb +135 -51
  332. data/lib/rubygems/{net-http → vendor/net-http}/lib/net/https.rb +1 -1
  333. data/lib/rubygems/vendor/optparse/COPYING +56 -0
  334. data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/ac.rb +16 -0
  335. data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/kwargs.rb +8 -3
  336. data/lib/rubygems/vendor/optparse/lib/optparse/uri.rb +7 -0
  337. data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/version.rb +9 -0
  338. data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse.rb +158 -62
  339. data/lib/rubygems/vendor/resolv/COPYING +56 -0
  340. data/lib/rubygems/{resolv → vendor/resolv}/lib/resolv.rb +117 -49
  341. data/lib/rubygems/vendor/securerandom/COPYING +56 -0
  342. data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +102 -0
  343. data/lib/rubygems/vendor/timeout/.document +1 -0
  344. data/lib/rubygems/vendor/timeout/COPYING +56 -0
  345. data/lib/rubygems/{timeout → vendor/timeout}/lib/timeout.rb +10 -11
  346. data/lib/rubygems/vendor/tsort/.document +1 -0
  347. data/lib/rubygems/{tsort → vendor/tsort}/lib/tsort.rb +2 -2
  348. data/lib/rubygems/vendor/uri/.document +1 -0
  349. data/lib/rubygems/vendor/uri/COPYING +56 -0
  350. data/lib/rubygems/vendor/uri/lib/uri/common.rb +880 -0
  351. data/lib/rubygems/vendor/uri/lib/uri/file.rb +100 -0
  352. data/lib/rubygems/vendor/uri/lib/uri/ftp.rb +267 -0
  353. data/lib/rubygems/vendor/uri/lib/uri/generic.rb +1579 -0
  354. data/lib/rubygems/vendor/uri/lib/uri/http.rb +125 -0
  355. data/lib/rubygems/vendor/uri/lib/uri/https.rb +23 -0
  356. data/lib/rubygems/vendor/uri/lib/uri/ldap.rb +261 -0
  357. data/lib/rubygems/vendor/uri/lib/uri/ldaps.rb +22 -0
  358. data/lib/rubygems/vendor/uri/lib/uri/mailto.rb +293 -0
  359. data/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
  360. data/lib/rubygems/vendor/uri/lib/uri/rfc3986_parser.rb +206 -0
  361. data/lib/rubygems/vendor/uri/lib/uri/version.rb +6 -0
  362. data/lib/rubygems/vendor/uri/lib/uri/ws.rb +83 -0
  363. data/lib/rubygems/vendor/uri/lib/uri/wss.rb +23 -0
  364. data/lib/rubygems/vendor/uri/lib/uri.rb +104 -0
  365. data/lib/rubygems/vendored_molinillo.rb +3 -0
  366. data/lib/rubygems/vendored_net_http.rb +5 -0
  367. data/lib/rubygems/vendored_optparse.rb +3 -0
  368. data/lib/rubygems/vendored_securerandom.rb +3 -0
  369. data/lib/rubygems/vendored_timeout.rb +5 -0
  370. data/lib/rubygems/vendored_tsort.rb +3 -0
  371. data/lib/rubygems/version.rb +26 -9
  372. data/lib/rubygems/yaml_serializer.rb +12 -7
  373. data/lib/rubygems.rb +82 -47
  374. data/rubygems-update.gemspec +11 -6
  375. data/setup.rb +1 -1
  376. metadata +131 -86
  377. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +0 -32
  378. data/lib/rubygems/net/http.rb +0 -3
  379. data/lib/rubygems/net-http/LICENSE.txt +0 -22
  380. data/lib/rubygems/net-http/lib/net/http/backward.rb +0 -40
  381. data/lib/rubygems/net-protocol/LICENSE.txt +0 -22
  382. data/lib/rubygems/optparse/lib/optparse/uri.rb +0 -7
  383. data/lib/rubygems/optparse.rb +0 -3
  384. data/lib/rubygems/resolv/LICENSE.txt +0 -22
  385. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  386. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  387. data/lib/rubygems/resolver/molinillo.rb +0 -3
  388. data/lib/rubygems/shellwords.rb +0 -3
  389. data/lib/rubygems/timeout/LICENSE.txt +0 -22
  390. data/lib/rubygems/timeout.rb +0 -3
  391. data/lib/rubygems/tsort/LICENSE.txt +0 -22
  392. data/lib/rubygems/tsort.rb +0 -3
  393. /data/{lib/rubygems/optparse → bundler/lib/bundler/vendor/fileutils}/COPYING +0 -0
  394. /data/{lib/rubygems/net-http → bundler/lib/bundler/vendor/securerandom}/.document +0 -0
  395. /data/{MAINTAINERS.txt → doc/MAINTAINERS.txt} +0 -0
  396. /data/{bundler → doc/bundler}/UPGRADING.md +0 -0
  397. /data/{UPGRADING.md → doc/rubygems/UPGRADING.md} +0 -0
  398. /data/lib/rubygems/{net-protocol → vendor/molinillo}/.document +0 -0
  399. /data/lib/rubygems/{resolver → vendor}/molinillo/LICENSE +0 -0
  400. /data/lib/rubygems/{optparse → vendor/net-http}/.document +0 -0
  401. /data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/exceptions.rb +0 -0
  402. /data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/proxy_delta.rb +0 -0
  403. /data/lib/rubygems/{resolv → vendor/net-protocol}/.document +0 -0
  404. /data/{bundler/lib/bundler/vendor/fileutils → lib/rubygems/vendor/net-protocol}/LICENSE.txt +0 -0
  405. /data/lib/rubygems/{net-protocol → vendor/net-protocol}/lib/net/protocol.rb +0 -0
  406. /data/lib/rubygems/{resolver/molinillo → vendor/optparse}/.document +0 -0
  407. /data/lib/rubygems/{optparse → vendor/optparse}/lib/optionparser.rb +0 -0
  408. /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/date.rb +0 -0
  409. /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/shellwords.rb +0 -0
  410. /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/time.rb +0 -0
  411. /data/lib/rubygems/{timeout → vendor/resolv}/.document +0 -0
  412. /data/lib/rubygems/{tsort → vendor/securerandom}/.document +0 -0
  413. /data/{bundler/lib/bundler/vendor/uri → lib/rubygems/vendor/tsort}/LICENSE.txt +0 -0
@@ -21,7 +21,7 @@
21
21
  #
22
22
 
23
23
  require_relative '../../../net-protocol/lib/net/protocol'
24
- require 'uri'
24
+ require_relative '../../../uri/lib/uri'
25
25
  require_relative '../../../resolv/lib/resolv'
26
26
  autoload :OpenSSL, 'openssl'
27
27
 
@@ -67,6 +67,8 @@ module Gem::Net #:nodoc:
67
67
  # Gem::Net::HTTP.post(uri, data)
68
68
  # params = {title: 'foo', body: 'bar', userId: 1}
69
69
  # Gem::Net::HTTP.post_form(uri, params)
70
+ # data = '{"title": "foo", "body": "bar", "userId": 1}'
71
+ # Gem::Net::HTTP.put(uri, data)
70
72
  #
71
73
  # - If performance is important, consider using sessions, which lower request overhead.
72
74
  # This {session}[rdoc-ref:Gem::Net::HTTP@Sessions] has multiple requests for
@@ -106,20 +108,20 @@ module Gem::Net #:nodoc:
106
108
  # It consists of some or all of: scheme, hostname, path, query, and fragment;
107
109
  # see {URI syntax}[https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax].
108
110
  #
109
- # A Ruby {URI::Generic}[https://docs.ruby-lang.org/en/master/URI/Generic.html] object
111
+ # A Ruby {Gem::URI::Generic}[https://docs.ruby-lang.org/en/master/Gem/URI/Generic.html] object
110
112
  # represents an internet URI.
111
113
  # It provides, among others, methods
112
114
  # +scheme+, +hostname+, +path+, +query+, and +fragment+.
113
115
  #
114
116
  # === Schemes
115
117
  #
116
- # An internet \URI has
118
+ # An internet \Gem::URI has
117
119
  # a {scheme}[https://en.wikipedia.org/wiki/List_of_URI_schemes].
118
120
  #
119
121
  # The two schemes supported in \Gem::Net::HTTP are <tt>'https'</tt> and <tt>'http'</tt>:
120
122
  #
121
123
  # uri.scheme # => "https"
122
- # URI('http://example.com').scheme # => "http"
124
+ # Gem::URI('http://example.com').scheme # => "http"
123
125
  #
124
126
  # === Hostnames
125
127
  #
@@ -146,8 +148,8 @@ module Gem::Net #:nodoc:
146
148
  #
147
149
  # _uri = uri.dup
148
150
  # params = {userId: 1, completed: false}
149
- # _uri.query = URI.encode_www_form(params)
150
- # _uri # => #<URI::HTTPS https://jsonplaceholder.typicode.com?userId=1&completed=false>
151
+ # _uri.query = Gem::URI.encode_www_form(params)
152
+ # _uri # => #<Gem::URI::HTTPS https://jsonplaceholder.typicode.com?userId=1&completed=false>
151
153
  # Gem::Net::HTTP.get(_uri)
152
154
  #
153
155
  # === Fragments
@@ -273,7 +275,7 @@ module Gem::Net #:nodoc:
273
275
  # # You should choose a better exception.
274
276
  # raise ArgumentError, 'Too many HTTP redirects' if limit == 0
275
277
  #
276
- # res = Gem::Net::HTTP.get_response(URI(uri))
278
+ # res = Gem::Net::HTTP.get_response(Gem::URI(uri))
277
279
  # case res
278
280
  # when Gem::Net::HTTPSuccess # Any success class.
279
281
  # res
@@ -327,9 +329,9 @@ module Gem::Net #:nodoc:
327
329
  #
328
330
  # Or if you simply want to make a GET request, you may pass in a URI
329
331
  # object that has an \HTTPS URL. \Gem::Net::HTTP automatically turns on TLS
330
- # verification if the URI object has a 'https' URI scheme:
332
+ # verification if the URI object has a 'https' :URI scheme:
331
333
  #
332
- # uri # => #<URI::HTTPS https://jsonplaceholder.typicode.com/>
334
+ # uri # => #<Gem::URI::HTTPS https://jsonplaceholder.typicode.com/>
333
335
  # Gem::Net::HTTP.get(uri)
334
336
  #
335
337
  # == Proxy Server
@@ -371,9 +373,9 @@ module Gem::Net #:nodoc:
371
373
  # === Proxy Using '<tt>ENV['http_proxy']</tt>'
372
374
  #
373
375
  # When environment variable <tt>'http_proxy'</tt>
374
- # is set to a \URI string,
376
+ # is set to a \Gem::URI string,
375
377
  # the returned +http+ will have the server at that URI as its proxy;
376
- # note that the \URI string must have a protocol
378
+ # note that the \Gem::URI string must have a protocol
377
379
  # such as <tt>'http'</tt> or <tt>'https'</tt>:
378
380
  #
379
381
  # ENV['http_proxy'] = 'http://example.com'
@@ -386,7 +388,7 @@ module Gem::Net #:nodoc:
386
388
  # http.proxy_user # => nil
387
389
  # http.proxy_pass # => nil
388
390
  #
389
- # The \URI string may include proxy username, password, and port number:
391
+ # The \Gem::URI string may include proxy username, password, and port number:
390
392
  #
391
393
  # ENV['http_proxy'] = 'http://pname:ppass@example.com:8000'
392
394
  # http = Gem::Net::HTTP.new(hostname)
@@ -456,6 +458,10 @@ module Gem::Net #:nodoc:
456
458
  #
457
459
  # == What's Here
458
460
  #
461
+ # First, what's elsewhere. Class Gem::Net::HTTP:
462
+ #
463
+ # - Inherits from {class Object}[https://docs.ruby-lang.org/en/master/Object.html#class-Object-label-What-27s+Here].
464
+ #
459
465
  # This is a categorized summary of methods and attributes.
460
466
  #
461
467
  # === \Gem::Net::HTTP Objects
@@ -520,6 +526,8 @@ module Gem::Net #:nodoc:
520
526
  # Sends a POST request with form data and returns a response object.
521
527
  # - {::post}[rdoc-ref:Gem::Net::HTTP.post]:
522
528
  # Sends a POST request with data and returns a response object.
529
+ # - {::put}[rdoc-ref:Gem::Net::HTTP.put]:
530
+ # Sends a PUT request with data and returns a response object.
523
531
  # - {#copy}[rdoc-ref:Gem::Net::HTTP#copy]:
524
532
  # Sends a COPY request and returns a response object.
525
533
  # - {#delete}[rdoc-ref:Gem::Net::HTTP#delete]:
@@ -722,7 +730,7 @@ module Gem::Net #:nodoc:
722
730
  class HTTP < Protocol
723
731
 
724
732
  # :stopdoc:
725
- VERSION = "0.4.0"
733
+ VERSION = "0.6.0"
726
734
  HTTPVersion = '1.1'
727
735
  begin
728
736
  require 'zlib'
@@ -790,7 +798,7 @@ module Gem::Net #:nodoc:
790
798
  #
791
799
  # With URI object +uri+ and optional hash argument +headers+:
792
800
  #
793
- # uri = URI('https://jsonplaceholder.typicode.com/todos/1')
801
+ # uri = Gem::URI('https://jsonplaceholder.typicode.com/todos/1')
794
802
  # headers = {'Content-type' => 'application/json; charset=UTF-8'}
795
803
  # Gem::Net::HTTP.get(uri, headers)
796
804
  #
@@ -889,6 +897,39 @@ module Gem::Net #:nodoc:
889
897
  }
890
898
  end
891
899
 
900
+ # Sends a PUT request to the server; returns a Gem::Net::HTTPResponse object.
901
+ #
902
+ # Argument +url+ must be a URL;
903
+ # argument +data+ must be a string:
904
+ #
905
+ # _uri = uri.dup
906
+ # _uri.path = '/posts'
907
+ # data = '{"title": "foo", "body": "bar", "userId": 1}'
908
+ # headers = {'content-type': 'application/json'}
909
+ # res = Gem::Net::HTTP.put(_uri, data, headers) # => #<Gem::Net::HTTPCreated 201 Created readbody=true>
910
+ # puts res.body
911
+ #
912
+ # Output:
913
+ #
914
+ # {
915
+ # "title": "foo",
916
+ # "body": "bar",
917
+ # "userId": 1,
918
+ # "id": 101
919
+ # }
920
+ #
921
+ # Related:
922
+ #
923
+ # - Gem::Net::HTTP::Put: request class for \HTTP method +PUT+.
924
+ # - Gem::Net::HTTP#put: convenience method for \HTTP method +PUT+.
925
+ #
926
+ def HTTP.put(url, data, header = nil)
927
+ start(url.hostname, url.port,
928
+ :use_ssl => url.scheme == 'https' ) {|http|
929
+ http.put(url, data, header)
930
+ }
931
+ end
932
+
892
933
  #
893
934
  # \HTTP session management
894
935
  #
@@ -1062,7 +1103,7 @@ module Gem::Net #:nodoc:
1062
1103
  # For proxy-defining arguments +p_addr+ through +p_no_proxy+,
1063
1104
  # see {Proxy Server}[rdoc-ref:Gem::Net::HTTP@Proxy+Server].
1064
1105
  #
1065
- def HTTP.new(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, p_no_proxy = nil)
1106
+ def HTTP.new(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, p_no_proxy = nil, p_use_ssl = nil)
1066
1107
  http = super address, port
1067
1108
 
1068
1109
  if proxy_class? then # from Gem::Net::HTTP::Proxy()
@@ -1071,10 +1112,11 @@ module Gem::Net #:nodoc:
1071
1112
  http.proxy_port = @proxy_port
1072
1113
  http.proxy_user = @proxy_user
1073
1114
  http.proxy_pass = @proxy_pass
1115
+ http.proxy_use_ssl = @proxy_use_ssl
1074
1116
  elsif p_addr == :ENV then
1075
1117
  http.proxy_from_env = true
1076
1118
  else
1077
- if p_addr && p_no_proxy && !URI::Generic.use_proxy?(address, address, port, p_no_proxy)
1119
+ if p_addr && p_no_proxy && !Gem::URI::Generic.use_proxy?(address, address, port, p_no_proxy)
1078
1120
  p_addr = nil
1079
1121
  p_port = nil
1080
1122
  end
@@ -1082,34 +1124,67 @@ module Gem::Net #:nodoc:
1082
1124
  http.proxy_port = p_port || default_port
1083
1125
  http.proxy_user = p_user
1084
1126
  http.proxy_pass = p_pass
1127
+ http.proxy_use_ssl = p_use_ssl
1085
1128
  end
1086
1129
 
1087
1130
  http
1088
1131
  end
1089
1132
 
1133
+ class << HTTP
1134
+ # Allows to set the default configuration that will be used
1135
+ # when creating a new connection.
1136
+ #
1137
+ # Example:
1138
+ #
1139
+ # Gem::Net::HTTP.default_configuration = {
1140
+ # read_timeout: 1,
1141
+ # write_timeout: 1
1142
+ # }
1143
+ # http = Gem::Net::HTTP.new(hostname)
1144
+ # http.open_timeout # => 60
1145
+ # http.read_timeout # => 1
1146
+ # http.write_timeout # => 1
1147
+ #
1148
+ attr_accessor :default_configuration
1149
+ end
1150
+
1090
1151
  # Creates a new \Gem::Net::HTTP object for the specified server address,
1091
1152
  # without opening the TCP connection or initializing the \HTTP session.
1092
1153
  # The +address+ should be a DNS hostname or IP address.
1093
1154
  def initialize(address, port = nil) # :nodoc:
1155
+ defaults = {
1156
+ keep_alive_timeout: 2,
1157
+ close_on_empty_response: false,
1158
+ open_timeout: 60,
1159
+ read_timeout: 60,
1160
+ write_timeout: 60,
1161
+ continue_timeout: nil,
1162
+ max_retries: 1,
1163
+ debug_output: nil,
1164
+ response_body_encoding: false,
1165
+ ignore_eof: true
1166
+ }
1167
+ options = defaults.merge(self.class.default_configuration || {})
1168
+
1094
1169
  @address = address
1095
1170
  @port = (port || HTTP.default_port)
1096
1171
  @ipaddr = nil
1097
1172
  @local_host = nil
1098
1173
  @local_port = nil
1099
1174
  @curr_http_version = HTTPVersion
1100
- @keep_alive_timeout = 2
1175
+ @keep_alive_timeout = options[:keep_alive_timeout]
1101
1176
  @last_communicated = nil
1102
- @close_on_empty_response = false
1177
+ @close_on_empty_response = options[:close_on_empty_response]
1103
1178
  @socket = nil
1104
1179
  @started = false
1105
- @open_timeout = 60
1106
- @read_timeout = 60
1107
- @write_timeout = 60
1108
- @continue_timeout = nil
1109
- @max_retries = 1
1110
- @debug_output = nil
1111
- @response_body_encoding = false
1112
- @ignore_eof = true
1180
+ @open_timeout = options[:open_timeout]
1181
+ @read_timeout = options[:read_timeout]
1182
+ @write_timeout = options[:write_timeout]
1183
+ @continue_timeout = options[:continue_timeout]
1184
+ @max_retries = options[:max_retries]
1185
+ @debug_output = options[:debug_output]
1186
+ @response_body_encoding = options[:response_body_encoding]
1187
+ @ignore_eof = options[:ignore_eof]
1113
1188
 
1114
1189
  @proxy_from_env = false
1115
1190
  @proxy_uri = nil
@@ -1117,6 +1192,7 @@ module Gem::Net #:nodoc:
1117
1192
  @proxy_port = nil
1118
1193
  @proxy_user = nil
1119
1194
  @proxy_pass = nil
1195
+ @proxy_use_ssl = nil
1120
1196
 
1121
1197
  @use_ssl = false
1122
1198
  @ssl_context = nil
@@ -1251,6 +1327,7 @@ module Gem::Net #:nodoc:
1251
1327
  # Sets the proxy password;
1252
1328
  # see {Proxy Server}[rdoc-ref:Gem::Net::HTTP@Proxy+Server].
1253
1329
  attr_writer :proxy_pass
1330
+ attr_writer :proxy_use_ssl
1254
1331
 
1255
1332
  # Returns the IP address for the connection.
1256
1333
  #
@@ -1440,23 +1517,6 @@ module Gem::Net #:nodoc:
1440
1517
  @use_ssl = flag
1441
1518
  end
1442
1519
 
1443
- SSL_IVNAMES = [
1444
- :@ca_file,
1445
- :@ca_path,
1446
- :@cert,
1447
- :@cert_store,
1448
- :@ciphers,
1449
- :@extra_chain_cert,
1450
- :@key,
1451
- :@ssl_timeout,
1452
- :@ssl_version,
1453
- :@min_version,
1454
- :@max_version,
1455
- :@verify_callback,
1456
- :@verify_depth,
1457
- :@verify_mode,
1458
- :@verify_hostname,
1459
- ] # :nodoc:
1460
1520
  SSL_ATTRIBUTES = [
1461
1521
  :ca_file,
1462
1522
  :ca_path,
@@ -1475,6 +1535,8 @@ module Gem::Net #:nodoc:
1475
1535
  :verify_hostname,
1476
1536
  ] # :nodoc:
1477
1537
 
1538
+ SSL_IVNAMES = SSL_ATTRIBUTES.map { |a| "@#{a}".to_sym } # :nodoc:
1539
+
1478
1540
  # Sets or returns the path to a CA certification file in PEM format.
1479
1541
  attr_accessor :ca_file
1480
1542
 
@@ -1610,7 +1672,13 @@ module Gem::Net #:nodoc:
1610
1672
  debug "opened"
1611
1673
  if use_ssl?
1612
1674
  if proxy?
1613
- plain_sock = BufferedIO.new(s, read_timeout: @read_timeout,
1675
+ if @proxy_use_ssl
1676
+ proxy_sock = OpenSSL::SSL::SSLSocket.new(s)
1677
+ ssl_socket_connect(proxy_sock, @open_timeout)
1678
+ else
1679
+ proxy_sock = s
1680
+ end
1681
+ proxy_sock = BufferedIO.new(proxy_sock, read_timeout: @read_timeout,
1614
1682
  write_timeout: @write_timeout,
1615
1683
  continue_timeout: @continue_timeout,
1616
1684
  debug_output: @debug_output)
@@ -1621,8 +1689,8 @@ module Gem::Net #:nodoc:
1621
1689
  buf << "Proxy-Authorization: Basic #{credential}\r\n"
1622
1690
  end
1623
1691
  buf << "\r\n"
1624
- plain_sock.write(buf)
1625
- HTTPResponse.read_new(plain_sock).value
1692
+ proxy_sock.write(buf)
1693
+ HTTPResponse.read_new(proxy_sock).value
1626
1694
  # assuming nothing left in buffers after successful CONNECT response
1627
1695
  end
1628
1696
 
@@ -1730,13 +1798,14 @@ module Gem::Net #:nodoc:
1730
1798
  @proxy_port = nil
1731
1799
  @proxy_user = nil
1732
1800
  @proxy_pass = nil
1801
+ @proxy_use_ssl = nil
1733
1802
 
1734
1803
  # Creates an \HTTP proxy class which behaves like \Gem::Net::HTTP, but
1735
1804
  # performs all access via the specified proxy.
1736
1805
  #
1737
1806
  # This class is obsolete. You may pass these same parameters directly to
1738
1807
  # \Gem::Net::HTTP.new. See Gem::Net::HTTP.new for details of the arguments.
1739
- def HTTP.Proxy(p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil) #:nodoc:
1808
+ def HTTP.Proxy(p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, p_use_ssl = nil) #:nodoc:
1740
1809
  return self unless p_addr
1741
1810
 
1742
1811
  Class.new(self) {
@@ -1754,6 +1823,7 @@ module Gem::Net #:nodoc:
1754
1823
 
1755
1824
  @proxy_user = p_user
1756
1825
  @proxy_pass = p_pass
1826
+ @proxy_use_ssl = p_use_ssl
1757
1827
  }
1758
1828
  end
1759
1829
 
@@ -1778,6 +1848,9 @@ module Gem::Net #:nodoc:
1778
1848
  # Returns the password for accessing the proxy, or +nil+ if none;
1779
1849
  # see Gem::Net::HTTP@Proxy+Server.
1780
1850
  attr_reader :proxy_pass
1851
+
1852
+ # Use SSL when talking to the proxy. If Gem::Net::HTTP does not use a proxy, nil.
1853
+ attr_reader :proxy_use_ssl
1781
1854
  end
1782
1855
 
1783
1856
  # Returns +true+ if a proxy server is defined, +false+ otherwise;
@@ -1796,7 +1869,7 @@ module Gem::Net #:nodoc:
1796
1869
  # The proxy URI determined from the environment for this connection.
1797
1870
  def proxy_uri # :nodoc:
1798
1871
  return if @proxy_uri == false
1799
- @proxy_uri ||= URI::HTTP.new(
1872
+ @proxy_uri ||= Gem::URI::HTTP.new(
1800
1873
  "http", nil, address, port, nil, nil, nil, nil, nil
1801
1874
  ).find_proxy || false
1802
1875
  @proxy_uri || nil
@@ -2012,6 +2085,11 @@ module Gem::Net #:nodoc:
2012
2085
  # http = Gem::Net::HTTP.new(hostname)
2013
2086
  # http.put('/todos/1', data) # => #<Gem::Net::HTTPOK 200 OK readbody=true>
2014
2087
  #
2088
+ # Related:
2089
+ #
2090
+ # - Gem::Net::HTTP::Put: request class for \HTTP method PUT.
2091
+ # - Gem::Net::HTTP.put: sends PUT request, returns response body.
2092
+ #
2015
2093
  def put(path, data, initheader = nil)
2016
2094
  request(Put.new(path, initheader), data)
2017
2095
  end
@@ -2350,7 +2428,10 @@ module Gem::Net #:nodoc:
2350
2428
  res
2351
2429
  }
2352
2430
  res.reading_body(@socket, req.response_body_permitted?) {
2353
- yield res if block_given?
2431
+ if block_given?
2432
+ count = max_retries # Don't restart in the middle of a download
2433
+ yield res
2434
+ end
2354
2435
  }
2355
2436
  rescue Gem::Net::OpenTimeout
2356
2437
  raise
@@ -2478,6 +2559,11 @@ module Gem::Net #:nodoc:
2478
2559
  alias_method :D, :debug
2479
2560
  end
2480
2561
 
2562
+ # for backward compatibility until Ruby 3.5
2563
+ # https://bugs.ruby-lang.org/issues/20900
2564
+ # https://github.com/bblimke/webmock/pull/1081
2565
+ HTTPSession = HTTP
2566
+ deprecate_constant :HTTPSession
2481
2567
  end
2482
2568
 
2483
2569
  require_relative 'http/exceptions'
@@ -2492,5 +2578,3 @@ require_relative 'http/response'
2492
2578
  require_relative 'http/responses'
2493
2579
 
2494
2580
  require_relative 'http/proxy_delta'
2495
-
2496
- require_relative 'http/backward'
@@ -4,7 +4,7 @@
4
4
  = net/https -- SSL/TLS enhancement for Gem::Net::HTTP.
5
5
 
6
6
  This file has been merged with net/http. There is no longer any need to
7
- require 'rubygems/net-http/lib/net/https' to use HTTPS.
7
+ require_relative 'https' to use HTTPS.
8
8
 
9
9
  See Gem::Net::HTTP for details on how to make HTTPS connections.
10
10
 
@@ -0,0 +1,56 @@
1
+ Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.jp>.
2
+ You can redistribute it and/or modify it under either the terms of the
3
+ 2-clause BSDL (see the file BSDL), or the conditions below:
4
+
5
+ 1. You may make and give away verbatim copies of the source form of the
6
+ software without restriction, provided that you duplicate all of the
7
+ original copyright notices and associated disclaimers.
8
+
9
+ 2. You may modify your copy of the software in any way, provided that
10
+ you do at least ONE of the following:
11
+
12
+ a. place your modifications in the Public Domain or otherwise
13
+ make them Freely Available, such as by posting said
14
+ modifications to Usenet or an equivalent medium, or by allowing
15
+ the author to include your modifications in the software.
16
+
17
+ b. use the modified software only within your corporation or
18
+ organization.
19
+
20
+ c. give non-standard binaries non-standard names, with
21
+ instructions on where to get the original software distribution.
22
+
23
+ d. make other distribution arrangements with the author.
24
+
25
+ 3. You may distribute the software in object code or binary form,
26
+ provided that you do at least ONE of the following:
27
+
28
+ a. distribute the binaries and library files of the software,
29
+ together with instructions (in the manual page or equivalent)
30
+ on where to get the original distribution.
31
+
32
+ b. accompany the distribution with the machine-readable source of
33
+ the software.
34
+
35
+ c. give non-standard binaries non-standard names, with
36
+ instructions on where to get the original software distribution.
37
+
38
+ d. make other distribution arrangements with the author.
39
+
40
+ 4. You may modify and include the part of the software into any other
41
+ software (possibly commercial). But some files in the distribution
42
+ are not written by the author, so that they are not under these terms.
43
+
44
+ For the list of those files and their copying conditions, see the
45
+ file LEGAL.
46
+
47
+ 5. The scripts and library files supplied as input to or produced as
48
+ output from the software do not automatically fall under the
49
+ copyright of the software, but belong to whomever generated them,
50
+ and may be sold commercially, and may be aggregated with this
51
+ software.
52
+
53
+ 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
54
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
55
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
56
+ PURPOSE.
@@ -1,7 +1,11 @@
1
1
  # frozen_string_literal: false
2
2
  require_relative '../optparse'
3
3
 
4
+ #
5
+ # autoconf-like options.
6
+ #
4
7
  class Gem::OptionParser::AC < Gem::OptionParser
8
+ # :stopdoc:
5
9
  private
6
10
 
7
11
  def _check_ac_args(name, block)
@@ -14,6 +18,7 @@ class Gem::OptionParser::AC < Gem::OptionParser
14
18
  end
15
19
 
16
20
  ARG_CONV = proc {|val| val.nil? ? true : val}
21
+ private_constant :ARG_CONV
17
22
 
18
23
  def _ac_arg_enable(prefix, name, help_string, block)
19
24
  _check_ac_args(name, block)
@@ -29,16 +34,27 @@ class Gem::OptionParser::AC < Gem::OptionParser
29
34
  enable
30
35
  end
31
36
 
37
+ # :startdoc:
38
+
32
39
  public
33
40
 
41
+ # Define <tt>--enable</tt> / <tt>--disable</tt> style option
42
+ #
43
+ # Appears as <tt>--enable-<i>name</i></tt> in help message.
34
44
  def ac_arg_enable(name, help_string, &block)
35
45
  _ac_arg_enable("enable", name, help_string, block)
36
46
  end
37
47
 
48
+ # Define <tt>--enable</tt> / <tt>--disable</tt> style option
49
+ #
50
+ # Appears as <tt>--disable-<i>name</i></tt> in help message.
38
51
  def ac_arg_disable(name, help_string, &block)
39
52
  _ac_arg_enable("disable", name, help_string, block)
40
53
  end
41
54
 
55
+ # Define <tt>--with</tt> / <tt>--without</tt> style option
56
+ #
57
+ # Appears as <tt>--with-<i>name</i></tt> in help message.
42
58
  def ac_arg_with(name, help_string, &block)
43
59
  _check_ac_args(name, block)
44
60
 
@@ -7,12 +7,17 @@ class Gem::OptionParser
7
7
  #
8
8
  # :include: ../../doc/optparse/creates_option.rdoc
9
9
  #
10
- def define_by_keywords(options, meth, **opts)
11
- meth.parameters.each do |type, name|
10
+ # Defines options which set in to _options_ for keyword parameters
11
+ # of _method_.
12
+ #
13
+ # Parameters for each keywords are given as elements of _params_.
14
+ #
15
+ def define_by_keywords(options, method, **params)
16
+ method.parameters.each do |type, name|
12
17
  case type
13
18
  when :key, :keyreq
14
19
  op, cl = *(type == :key ? %w"[ ]" : ["", ""])
15
- define("--#{name}=#{op}#{name.upcase}#{cl}", *opts[name]) do |o|
20
+ define("--#{name}=#{op}#{name.upcase}#{cl}", *params[name]) do |o|
16
21
  options[name] = o
17
22
  end
18
23
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: false
2
+ # -*- ruby -*-
3
+
4
+ require_relative '../optparse'
5
+ require_relative '../../../uri/lib/uri'
6
+
7
+ Gem::OptionParser.accept(Gem::URI) {|s,| Gem::URI.parse(s) if s}
@@ -2,6 +2,11 @@
2
2
  # Gem::OptionParser internal utility
3
3
 
4
4
  class << Gem::OptionParser
5
+ #
6
+ # Shows version string in packages if Version is defined.
7
+ #
8
+ # +pkgs+:: package list
9
+ #
5
10
  def show_version(*pkgs)
6
11
  progname = ARGV.options.program_name
7
12
  result = false
@@ -47,6 +52,8 @@ class << Gem::OptionParser
47
52
  result
48
53
  end
49
54
 
55
+ # :stopdoc:
56
+
50
57
  def each_const(path, base = ::Object)
51
58
  path.split(/::|\//).inject(base) do |klass, name|
52
59
  raise NameError, path unless Module === klass
@@ -68,4 +75,6 @@ class << Gem::OptionParser
68
75
  end
69
76
  end
70
77
  end
78
+
79
+ # :startdoc:
71
80
  end