rubygems-update 3.5.3 β 3.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1410 -686
- data/CODE_OF_CONDUCT.md +79 -28
- data/CONTRIBUTING.md +4 -226
- data/Manifest.txt +107 -83
- data/README.md +16 -11
- data/SECURITY.md +7 -0
- data/bundler/CHANGELOG.md +1525 -931
- data/bundler/README.md +9 -9
- data/bundler/bundler.gemspec +2 -2
- data/bundler/lib/bundler/build_metadata.rb +10 -11
- data/bundler/lib/bundler/checksum.rb +22 -12
- data/bundler/lib/bundler/cli/add.rb +3 -1
- data/bundler/lib/bundler/cli/binstubs.rb +1 -1
- data/bundler/lib/bundler/cli/check.rb +3 -3
- data/bundler/lib/bundler/cli/common.rb +1 -1
- data/bundler/lib/bundler/cli/config.rb +2 -2
- data/bundler/lib/bundler/cli/console.rb +8 -10
- data/bundler/lib/bundler/cli/doctor/diagnose.rb +167 -0
- data/bundler/lib/bundler/cli/doctor/ssl.rb +249 -0
- data/bundler/lib/bundler/cli/doctor.rb +27 -151
- data/bundler/lib/bundler/cli/exec.rb +1 -0
- data/bundler/lib/bundler/cli/fund.rb +1 -1
- data/bundler/lib/bundler/cli/gem.rb +74 -46
- data/bundler/lib/bundler/cli/info.rb +6 -6
- data/bundler/lib/bundler/cli/inject.rb +3 -3
- data/bundler/lib/bundler/cli/install.rb +19 -10
- data/bundler/lib/bundler/cli/issue.rb +3 -3
- data/bundler/lib/bundler/cli/lock.rb +32 -11
- data/bundler/lib/bundler/cli/outdated.rb +23 -23
- data/bundler/lib/bundler/cli/plugin.rb +3 -2
- data/bundler/lib/bundler/cli/pristine.rb +1 -1
- data/bundler/lib/bundler/cli/show.rb +3 -3
- data/bundler/lib/bundler/cli/update.rb +3 -3
- data/bundler/lib/bundler/cli.rb +75 -145
- data/bundler/lib/bundler/compact_index_client/cache.rb +48 -73
- data/bundler/lib/bundler/compact_index_client/cache_file.rb +0 -5
- data/bundler/lib/bundler/compact_index_client/parser.rb +84 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +6 -16
- data/bundler/lib/bundler/compact_index_client.rb +52 -85
- data/bundler/lib/bundler/constants.rb +8 -1
- data/bundler/lib/bundler/current_ruby.rb +48 -34
- data/bundler/lib/bundler/definition.rb +501 -328
- data/bundler/lib/bundler/dependency.rb +93 -47
- data/bundler/lib/bundler/dsl.rb +147 -103
- data/bundler/lib/bundler/endpoint_specification.rb +30 -3
- data/bundler/lib/bundler/env.rb +1 -1
- data/bundler/lib/bundler/environment_preserver.rb +5 -23
- data/bundler/lib/bundler/errors.rb +53 -5
- data/bundler/lib/bundler/feature_flag.rb +18 -18
- data/bundler/lib/bundler/fetcher/compact_index.rb +16 -25
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +34 -8
- data/bundler/lib/bundler/fetcher.rb +63 -26
- data/bundler/lib/bundler/force_platform.rb +0 -2
- data/bundler/lib/bundler/friendly_errors.rb +3 -2
- data/bundler/lib/bundler/gem_helper.rb +1 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +42 -40
- data/bundler/lib/bundler/index.rb +7 -2
- data/bundler/lib/bundler/injector.rb +14 -16
- data/bundler/lib/bundler/inline.rb +42 -17
- data/bundler/lib/bundler/installer/gem_installer.rb +4 -3
- data/bundler/lib/bundler/installer/parallel_installer.rb +3 -2
- data/bundler/lib/bundler/installer/standalone.rb +2 -5
- data/bundler/lib/bundler/installer.rb +22 -45
- data/bundler/lib/bundler/lazy_specification.rb +121 -48
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +36 -9
- data/bundler/lib/bundler/man/bundle-add.1 +44 -27
- data/bundler/lib/bundler/man/bundle-add.1.ronn +52 -23
- data/bundler/lib/bundler/man/bundle-binstubs.1 +9 -6
- data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +6 -3
- data/bundler/lib/bundler/man/bundle-cache.1 +32 -4
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +31 -2
- data/bundler/lib/bundler/man/bundle-check.1 +7 -5
- data/bundler/lib/bundler/man/bundle-check.1.ronn +7 -2
- data/bundler/lib/bundler/man/bundle-clean.1 +3 -3
- data/bundler/lib/bundler/man/bundle-config.1 +180 -138
- data/bundler/lib/bundler/man/bundle-config.1.ronn +96 -99
- data/bundler/lib/bundler/man/bundle-console.1 +4 -6
- data/bundler/lib/bundler/man/bundle-console.1.ronn +2 -7
- data/bundler/lib/bundler/man/bundle-doctor.1 +46 -7
- data/bundler/lib/bundler/man/bundle-doctor.1.ronn +49 -5
- data/bundler/lib/bundler/man/bundle-env.1 +9 -0
- data/bundler/lib/bundler/man/bundle-env.1.ronn +10 -0
- data/bundler/lib/bundler/man/bundle-exec.1 +9 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -3
- data/bundler/lib/bundler/man/bundle-fund.1 +22 -0
- data/bundler/lib/bundler/man/bundle-fund.1.ronn +25 -0
- data/bundler/lib/bundler/man/bundle-gem.1 +69 -28
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +42 -6
- data/bundler/lib/bundler/man/bundle-help.1 +3 -3
- data/bundler/lib/bundler/man/bundle-info.1 +7 -4
- data/bundler/lib/bundler/man/bundle-info.1.ronn +6 -2
- data/bundler/lib/bundler/man/bundle-init.1 +5 -5
- data/bundler/lib/bundler/man/bundle-init.1.ronn +3 -2
- data/bundler/lib/bundler/man/bundle-inject.1 +13 -5
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +10 -2
- data/bundler/lib/bundler/man/bundle-install.1 +20 -17
- data/bundler/lib/bundler/man/bundle-install.1.ronn +26 -23
- data/bundler/lib/bundler/man/bundle-issue.1 +45 -0
- data/bundler/lib/bundler/man/bundle-issue.1.ronn +37 -0
- data/bundler/lib/bundler/man/bundle-licenses.1 +9 -0
- data/bundler/lib/bundler/man/bundle-licenses.1.ronn +10 -0
- data/bundler/lib/bundler/man/bundle-list.1 +3 -3
- data/bundler/lib/bundler/man/bundle-list.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +23 -8
- data/bundler/lib/bundler/man/bundle-lock.1.ronn +25 -4
- data/bundler/lib/bundler/man/bundle-open.1 +4 -4
- data/bundler/lib/bundler/man/bundle-open.1.ronn +2 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +10 -7
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +8 -4
- data/bundler/lib/bundler/man/bundle-platform.1 +3 -3
- data/bundler/lib/bundler/man/bundle-plugin.1 +9 -6
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +7 -3
- data/bundler/lib/bundler/man/bundle-pristine.1 +3 -3
- data/bundler/lib/bundler/man/bundle-pristine.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +3 -3
- data/bundler/lib/bundler/man/bundle-remove.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +7 -4
- data/bundler/lib/bundler/man/bundle-show.1.ronn +4 -0
- data/bundler/lib/bundler/man/bundle-update.1 +17 -11
- data/bundler/lib/bundler/man/bundle-update.1.ronn +17 -9
- data/bundler/lib/bundler/man/bundle-version.1 +3 -3
- data/bundler/lib/bundler/man/bundle-viz.1 +6 -6
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +7 -3
- data/bundler/lib/bundler/man/bundle.1 +3 -3
- data/bundler/lib/bundler/man/gemfile.5 +7 -5
- data/bundler/lib/bundler/man/gemfile.5.ronn +8 -2
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_platform.rb +31 -12
- data/bundler/lib/bundler/materialization.rb +59 -0
- data/bundler/lib/bundler/mirror.rb +3 -3
- data/bundler/lib/bundler/plugin/api/source.rb +5 -4
- data/bundler/lib/bundler/plugin/events.rb +24 -0
- data/bundler/lib/bundler/plugin/index.rb +5 -1
- data/bundler/lib/bundler/plugin/installer/path.rb +26 -0
- data/bundler/lib/bundler/plugin/installer.rb +37 -17
- data/bundler/lib/bundler/plugin/source_list.rb +4 -4
- data/bundler/lib/bundler/plugin.rb +21 -2
- data/bundler/lib/bundler/process_lock.rb +10 -14
- data/bundler/lib/bundler/remote_specification.rb +6 -1
- data/bundler/lib/bundler/resolver/base.rb +14 -3
- data/bundler/lib/bundler/resolver/candidate.rb +18 -27
- data/bundler/lib/bundler/resolver/package.rb +20 -3
- data/bundler/lib/bundler/resolver/spec_group.rb +22 -27
- data/bundler/lib/bundler/resolver/strategy.rb +40 -0
- data/bundler/lib/bundler/resolver.rb +114 -52
- data/bundler/lib/bundler/retry.rb +1 -1
- data/bundler/lib/bundler/ruby_dsl.rb +12 -3
- data/bundler/lib/bundler/ruby_version.rb +7 -1
- data/bundler/lib/bundler/rubygems_ext.rb +303 -150
- data/bundler/lib/bundler/rubygems_gem_installer.rb +40 -5
- data/bundler/lib/bundler/rubygems_integration.rb +40 -73
- data/bundler/lib/bundler/runtime.rb +48 -35
- data/bundler/lib/bundler/self_manager.rb +36 -26
- data/bundler/lib/bundler/settings/validator.rb +0 -23
- data/bundler/lib/bundler/settings.rb +36 -27
- data/bundler/lib/bundler/setup.rb +6 -0
- data/bundler/lib/bundler/shared_helpers.rb +45 -25
- data/bundler/lib/bundler/source/gemspec.rb +1 -4
- data/bundler/lib/bundler/source/git/git_proxy.rb +26 -9
- data/bundler/lib/bundler/source/git.rb +113 -41
- data/bundler/lib/bundler/source/metadata.rb +4 -3
- data/bundler/lib/bundler/source/path.rb +14 -18
- data/bundler/lib/bundler/source/rubygems/remote.rb +12 -4
- data/bundler/lib/bundler/source/rubygems.rb +54 -48
- data/bundler/lib/bundler/source.rb +2 -0
- data/bundler/lib/bundler/source_list.rb +54 -12
- data/bundler/lib/bundler/source_map.rb +1 -1
- data/bundler/lib/bundler/spec_set.rb +227 -103
- data/bundler/lib/bundler/stub_specification.rb +29 -2
- data/bundler/lib/bundler/templates/Executable +0 -11
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +77 -29
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +1 -3
- data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -3
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +17 -15
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +14 -12
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
- data/bundler/lib/bundler/ui/shell.rb +26 -4
- data/bundler/lib/bundler/ui/silent.rb +12 -1
- data/bundler/lib/bundler/uri_credentials_filter.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +53 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +11 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +15 -13
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +2 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +134 -57
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +4 -24
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +1 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb +42 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +20 -8
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +17 -29
- data/bundler/lib/bundler/vendor/securerandom/COPYING +56 -0
- data/bundler/lib/bundler/vendor/securerandom/lib/securerandom.rb +102 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +3 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +11 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +1 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +9 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +5 -21
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +11 -0
- data/bundler/lib/bundler/vendor/uri/COPYING +56 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +43 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +3 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +28 -37
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +16 -9
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +26 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +9 -9
- data/bundler/lib/bundler/vendored_net_http.rb +20 -5
- data/bundler/lib/bundler/vendored_securerandom.rb +12 -0
- data/bundler/lib/bundler/vendored_timeout.rb +7 -3
- data/bundler/lib/bundler/vendored_uri.rb +18 -1
- data/bundler/lib/bundler/version.rb +10 -2
- data/bundler/lib/bundler/worker.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +12 -7
- data/bundler/lib/bundler.rb +101 -61
- data/{bundler β doc/bundler}/UPGRADING.md +132 -127
- data/doc/rubygems/CONTRIBUTING.md +227 -0
- data/{POLICIES.md β doc/rubygems/POLICIES.md} +86 -17
- data/exe/update_rubygems +1 -1
- data/lib/rubygems/basic_specification.rb +50 -10
- data/lib/rubygems/bundler_version_finder.rb +1 -1
- data/lib/rubygems/command.rb +1 -4
- data/lib/rubygems/command_manager.rb +5 -6
- data/lib/rubygems/commands/build_command.rb +2 -11
- data/lib/rubygems/commands/cleanup_command.rb +3 -13
- data/lib/rubygems/commands/contents_command.rb +17 -10
- data/lib/rubygems/commands/environment_command.rb +5 -0
- data/lib/rubygems/commands/exec_command.rb +18 -11
- data/lib/rubygems/commands/fetch_command.rb +14 -0
- data/lib/rubygems/commands/help_command.rb +2 -2
- data/lib/rubygems/commands/install_command.rb +0 -4
- data/lib/rubygems/commands/pristine_command.rb +29 -19
- data/lib/rubygems/commands/push_command.rb +31 -6
- data/lib/rubygems/commands/rdoc_command.rb +3 -10
- data/lib/rubygems/commands/rebuild_command.rb +262 -0
- data/lib/rubygems/commands/setup_command.rb +13 -18
- data/lib/rubygems/commands/sources_command.rb +2 -2
- data/lib/rubygems/commands/uninstall_command.rb +9 -4
- data/lib/rubygems/commands/unpack_command.rb +0 -6
- data/lib/rubygems/commands/update_command.rb +13 -22
- data/lib/rubygems/config_file.rb +45 -16
- data/lib/rubygems/core_ext/kernel_require.rb +15 -3
- data/lib/rubygems/core_ext/kernel_warn.rb +2 -6
- data/lib/rubygems/defaults.rb +7 -7
- data/lib/rubygems/dependency.rb +12 -16
- data/lib/rubygems/dependency_list.rb +1 -1
- data/lib/rubygems/deprecate.rb +79 -77
- data/lib/rubygems/errors.rb +2 -1
- data/lib/rubygems/exceptions.rb +2 -9
- data/lib/rubygems/ext/builder.rb +21 -8
- data/lib/rubygems/ext/cargo_builder.rb +16 -26
- data/lib/rubygems/ext/cmake_builder.rb +7 -2
- data/lib/rubygems/ext/configure_builder.rb +7 -2
- data/lib/rubygems/ext/ext_conf_builder.rb +9 -5
- data/lib/rubygems/ext/rake_builder.rb +7 -4
- data/lib/rubygems/gem_runner.rb +9 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +11 -4
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -1
- data/lib/rubygems/gemcutter_utilities.rb +52 -26
- data/lib/rubygems/gemspec_helpers.rb +19 -0
- data/lib/rubygems/install_update_options.rb +5 -0
- data/lib/rubygems/installer.rb +76 -90
- data/lib/rubygems/local_remote_options.rb +8 -8
- data/lib/rubygems/package/tar_header.rb +31 -4
- data/lib/rubygems/package/tar_reader/entry.rb +1 -5
- data/lib/rubygems/package/tar_writer.rb +5 -4
- data/lib/rubygems/package.rb +13 -8
- data/lib/rubygems/platform.rb +148 -43
- data/lib/rubygems/psych_tree.rb +4 -0
- data/lib/rubygems/query_utils.rb +2 -2
- data/lib/rubygems/rdoc.rb +16 -3
- data/lib/rubygems/remote_fetcher.rb +6 -7
- data/lib/rubygems/request.rb +5 -5
- data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
- data/lib/rubygems/request_set.rb +4 -7
- data/lib/rubygems/requirement.rb +16 -12
- data/lib/rubygems/resolver/activation_request.rb +1 -1
- data/lib/rubygems/resolver/api_set/gem_parser.rb +2 -5
- data/lib/rubygems/resolver/api_set.rb +13 -8
- data/lib/rubygems/resolver/best_set.rb +1 -29
- data/lib/rubygems/resolver/composed_set.rb +3 -3
- data/lib/rubygems/resolver/git_set.rb +0 -1
- data/lib/rubygems/resolver/index_set.rb +2 -2
- data/lib/rubygems/resolver/source_set.rb +1 -1
- data/lib/rubygems/resolver/spec_specification.rb +7 -0
- data/lib/rubygems/resolver.rb +8 -8
- data/lib/rubygems/s3_uri_signer.rb +8 -6
- data/lib/rubygems/safe_marshal/reader.rb +31 -14
- data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +29 -16
- data/lib/rubygems/safe_yaml.rb +10 -1
- data/lib/rubygems/security.rb +1 -1
- data/lib/rubygems/source/git.rb +22 -17
- data/lib/rubygems/source/installed.rb +3 -1
- data/lib/rubygems/source/local.rb +8 -4
- data/lib/rubygems/source/specific_file.rb +5 -3
- data/lib/rubygems/source.rb +37 -29
- data/lib/rubygems/source_list.rb +1 -1
- data/lib/rubygems/spec_fetcher.rb +47 -15
- data/lib/rubygems/specification.rb +110 -183
- data/lib/rubygems/specification_policy.rb +33 -13
- data/lib/rubygems/specification_record.rb +212 -0
- data/lib/rubygems/stub_specification.rb +32 -10
- data/lib/rubygems/target_rbconfig.rb +50 -0
- data/lib/rubygems/uninstaller.rb +42 -22
- data/lib/rubygems/uri.rb +6 -6
- data/lib/rubygems/uri_formatter.rb +2 -1
- data/lib/rubygems/util/licenses.rb +118 -1
- data/lib/rubygems/util.rb +1 -1
- data/lib/rubygems/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/delegates/specification_provider.rb +11 -11
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/dependency_graph/action.rb +1 -1
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/dependency_graph/log.rb +1 -1
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/dependency_graph/vertex.rb +1 -1
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/dependency_graph.rb +2 -2
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/errors.rb +1 -1
- data/lib/rubygems/vendor/molinillo/lib/molinillo/gem_metadata.rb +6 -0
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/modules/specification_provider.rb +2 -2
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/modules/ui.rb +1 -1
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/resolution.rb +4 -4
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/resolver.rb +1 -1
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo/state.rb +1 -1
- data/lib/rubygems/{resolver β vendor}/molinillo/lib/molinillo.rb +2 -2
- data/lib/rubygems/vendor/net-http/COPYING +56 -0
- data/lib/rubygems/{net-http β vendor/net-http}/lib/net/http/generic_request.rb +9 -9
- data/lib/rubygems/{net-http β vendor/net-http}/lib/net/http/header.rb +3 -3
- data/lib/rubygems/{net-http β vendor/net-http}/lib/net/http/request.rb +3 -3
- data/lib/rubygems/{net-http β vendor/net-http}/lib/net/http/requests.rb +35 -30
- data/lib/rubygems/{net-http β vendor/net-http}/lib/net/http/response.rb +2 -2
- data/lib/rubygems/{net-http β vendor/net-http}/lib/net/http/responses.rb +6 -6
- data/lib/rubygems/{net-http β vendor/net-http}/lib/net/http/status.rb +1 -1
- data/lib/rubygems/{net-http β vendor/net-http}/lib/net/http.rb +149 -70
- data/lib/rubygems/{net-http β vendor/net-http}/lib/net/https.rb +1 -1
- data/lib/rubygems/vendor/optparse/COPYING +56 -0
- data/lib/rubygems/{optparse β vendor/optparse}/lib/optparse/ac.rb +16 -0
- data/lib/rubygems/{optparse β vendor/optparse}/lib/optparse/kwargs.rb +8 -3
- data/lib/rubygems/vendor/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/{optparse β vendor/optparse}/lib/optparse/version.rb +9 -0
- data/lib/rubygems/{optparse β vendor/optparse}/lib/optparse.rb +158 -62
- data/lib/rubygems/vendor/resolv/COPYING +56 -0
- data/lib/rubygems/{resolv β vendor/resolv}/lib/resolv.rb +165 -69
- data/lib/rubygems/vendor/securerandom/COPYING +56 -0
- data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +102 -0
- data/lib/rubygems/vendor/timeout/COPYING +56 -0
- data/lib/rubygems/{timeout β vendor/timeout}/lib/timeout.rb +10 -11
- data/lib/rubygems/{tsort β vendor/tsort}/lib/tsort.rb +2 -2
- data/lib/rubygems/vendor/uri/COPYING +56 -0
- data/lib/rubygems/vendor/uri/lib/uri/common.rb +880 -0
- data/lib/rubygems/vendor/uri/lib/uri/file.rb +100 -0
- data/lib/rubygems/vendor/uri/lib/uri/ftp.rb +267 -0
- data/lib/rubygems/vendor/uri/lib/uri/generic.rb +1579 -0
- data/lib/rubygems/vendor/uri/lib/uri/http.rb +125 -0
- data/lib/rubygems/vendor/uri/lib/uri/https.rb +23 -0
- data/lib/rubygems/vendor/uri/lib/uri/ldap.rb +261 -0
- data/lib/rubygems/vendor/uri/lib/uri/ldaps.rb +22 -0
- data/lib/rubygems/vendor/uri/lib/uri/mailto.rb +293 -0
- data/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
- data/lib/rubygems/vendor/uri/lib/uri/rfc3986_parser.rb +206 -0
- data/lib/rubygems/vendor/uri/lib/uri/version.rb +6 -0
- data/lib/rubygems/vendor/uri/lib/uri/ws.rb +83 -0
- data/lib/rubygems/vendor/uri/lib/uri/wss.rb +23 -0
- data/lib/rubygems/vendor/uri/lib/uri.rb +104 -0
- data/lib/rubygems/vendored_molinillo.rb +3 -0
- data/lib/rubygems/vendored_net_http.rb +5 -0
- data/lib/rubygems/vendored_optparse.rb +3 -0
- data/lib/rubygems/vendored_securerandom.rb +3 -0
- data/lib/rubygems/vendored_timeout.rb +5 -0
- data/lib/rubygems/vendored_tsort.rb +3 -0
- data/lib/rubygems/version.rb +26 -9
- data/lib/rubygems/yaml_serializer.rb +12 -7
- data/lib/rubygems.rb +160 -53
- data/rubygems-update.gemspec +11 -6
- data/setup.rb +1 -1
- metadata +124 -96
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +0 -32
- data/bundler/lib/bundler/gem_helpers.rb +0 -127
- data/bundler/lib/bundler/templates/Executable.bundler +0 -109
- data/bundler/lib/bundler/vendor/fileutils/.document +0 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/.document +0 -1
- data/bundler/lib/bundler/vendor/pub_grub/.document +0 -1
- data/bundler/lib/bundler/vendor/thor/.document +0 -1
- data/bundler/lib/bundler/vendor/tsort/.document +0 -1
- data/bundler/lib/bundler/vendor/uri/.document +0 -1
- data/lib/rubygems/net/http.rb +0 -3
- data/lib/rubygems/net-http/.document +0 -1
- data/lib/rubygems/net-http/LICENSE.txt +0 -22
- data/lib/rubygems/net-http/lib/net/http/backward.rb +0 -40
- data/lib/rubygems/net-protocol/.document +0 -1
- data/lib/rubygems/net-protocol/LICENSE.txt +0 -22
- data/lib/rubygems/optparse/.document +0 -1
- data/lib/rubygems/optparse/lib/optparse/uri.rb +0 -7
- data/lib/rubygems/optparse.rb +0 -3
- data/lib/rubygems/resolv/.document +0 -1
- data/lib/rubygems/resolv/LICENSE.txt +0 -22
- data/lib/rubygems/resolver/molinillo/.document +0 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/lib/rubygems/resolver/molinillo.rb +0 -3
- data/lib/rubygems/shellwords.rb +0 -3
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem +0 -21
- data/lib/rubygems/timeout/.document +0 -1
- data/lib/rubygems/timeout/LICENSE.txt +0 -22
- data/lib/rubygems/timeout.rb +0 -3
- data/lib/rubygems/tsort/.document +0 -1
- data/lib/rubygems/tsort/LICENSE.txt +0 -22
- data/lib/rubygems/tsort.rb +0 -3
- /data/{lib/rubygems/optparse β bundler/lib/bundler/vendor/fileutils}/COPYING +0 -0
- /data/{MAINTAINERS.txt β doc/MAINTAINERS.txt} +0 -0
- /data/{UPGRADING.md β doc/rubygems/UPGRADING.md} +0 -0
- /data/lib/rubygems/ssl_certs/rubygems.org/{GlobalSignRootCA_R3.pem β GlobalSign.pem} +0 -0
- /data/{bundler/lib/bundler/vendor/connection_pool β lib/rubygems/vendor}/.document +0 -0
- /data/lib/rubygems/{resolver β vendor}/molinillo/LICENSE +0 -0
- /data/lib/rubygems/{net-http β vendor/net-http}/lib/net/http/exceptions.rb +0 -0
- /data/lib/rubygems/{net-http β vendor/net-http}/lib/net/http/proxy_delta.rb +0 -0
- /data/{bundler/lib/bundler/vendor/fileutils β lib/rubygems/vendor/net-protocol}/LICENSE.txt +0 -0
- /data/lib/rubygems/{net-protocol β vendor/net-protocol}/lib/net/protocol.rb +0 -0
- /data/lib/rubygems/{optparse β vendor/optparse}/lib/optionparser.rb +0 -0
- /data/lib/rubygems/{optparse β vendor/optparse}/lib/optparse/date.rb +0 -0
- /data/lib/rubygems/{optparse β vendor/optparse}/lib/optparse/shellwords.rb +0 -0
- /data/lib/rubygems/{optparse β vendor/optparse}/lib/optparse/time.rb +0 -0
- /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
|
-
|
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
|
@@ -469,8 +475,7 @@ module Gem::Net #:nodoc:
|
|
469
475
|
#
|
470
476
|
# - {::start}[rdoc-ref:Gem::Net::HTTP.start]:
|
471
477
|
# Begins a new session in a new \Gem::Net::HTTP object.
|
472
|
-
# - {#started?}[rdoc-ref:Gem::Net::HTTP#started?]
|
473
|
-
# (aliased as {#active?}[rdoc-ref:Gem::Net::HTTP#active?]):
|
478
|
+
# - {#started?}[rdoc-ref:Gem::Net::HTTP#started?]:
|
474
479
|
# Returns whether in a session.
|
475
480
|
# - {#finish}[rdoc-ref:Gem::Net::HTTP#finish]:
|
476
481
|
# Ends an active session.
|
@@ -520,6 +525,8 @@ module Gem::Net #:nodoc:
|
|
520
525
|
# Sends a POST request with form data and returns a response object.
|
521
526
|
# - {::post}[rdoc-ref:Gem::Net::HTTP.post]:
|
522
527
|
# Sends a POST request with data and returns a response object.
|
528
|
+
# - {::put}[rdoc-ref:Gem::Net::HTTP.put]:
|
529
|
+
# Sends a PUT request with data and returns a response object.
|
523
530
|
# - {#copy}[rdoc-ref:Gem::Net::HTTP#copy]:
|
524
531
|
# Sends a COPY request and returns a response object.
|
525
532
|
# - {#delete}[rdoc-ref:Gem::Net::HTTP#delete]:
|
@@ -548,18 +555,15 @@ module Gem::Net #:nodoc:
|
|
548
555
|
# Sends a PUT request and returns a response object.
|
549
556
|
# - {#request}[rdoc-ref:Gem::Net::HTTP#request]:
|
550
557
|
# Sends a request and returns a response object.
|
551
|
-
# - {#request_get}[rdoc-ref:Gem::Net::HTTP#request_get]
|
552
|
-
# (aliased as {#get2}[rdoc-ref:Gem::Net::HTTP#get2]):
|
558
|
+
# - {#request_get}[rdoc-ref:Gem::Net::HTTP#request_get]:
|
553
559
|
# Sends a GET request and forms a response object;
|
554
560
|
# if a block given, calls the block with the object,
|
555
561
|
# otherwise returns the object.
|
556
|
-
# - {#request_head}[rdoc-ref:Gem::Net::HTTP#request_head]
|
557
|
-
# (aliased as {#head2}[rdoc-ref:Gem::Net::HTTP#head2]):
|
562
|
+
# - {#request_head}[rdoc-ref:Gem::Net::HTTP#request_head]:
|
558
563
|
# Sends a HEAD request and forms a response object;
|
559
564
|
# if a block given, calls the block with the object,
|
560
565
|
# otherwise returns the object.
|
561
|
-
# - {#request_post}[rdoc-ref:Gem::Net::HTTP#request_post]
|
562
|
-
# (aliased as {#post2}[rdoc-ref:Gem::Net::HTTP#post2]):
|
566
|
+
# - {#request_post}[rdoc-ref:Gem::Net::HTTP#request_post]:
|
563
567
|
# Sends a POST request and forms a response object;
|
564
568
|
# if a block given, calls the block with the object,
|
565
569
|
# otherwise returns the object.
|
@@ -597,8 +601,7 @@ module Gem::Net #:nodoc:
|
|
597
601
|
# Returns whether +self+ is a proxy class.
|
598
602
|
# - {#proxy?}[rdoc-ref:Gem::Net::HTTP#proxy?]:
|
599
603
|
# Returns whether +self+ has a proxy.
|
600
|
-
# - {#proxy_address}[rdoc-ref:Gem::Net::HTTP#proxy_address]
|
601
|
-
# (aliased as {#proxyaddr}[rdoc-ref:Gem::Net::HTTP#proxyaddr]):
|
604
|
+
# - {#proxy_address}[rdoc-ref:Gem::Net::HTTP#proxy_address]:
|
602
605
|
# Returns the proxy address.
|
603
606
|
# - {#proxy_from_env?}[rdoc-ref:Gem::Net::HTTP#proxy_from_env?]:
|
604
607
|
# Returns whether the proxy is taken from an environment variable.
|
@@ -710,8 +713,7 @@ module Gem::Net #:nodoc:
|
|
710
713
|
# === \HTTP Version
|
711
714
|
#
|
712
715
|
# - {::version_1_2?}[rdoc-ref:Gem::Net::HTTP.version_1_2?]
|
713
|
-
# (aliased as {::
|
714
|
-
# and {::version_1_2}[rdoc-ref:Gem::Net::HTTP.version_1_2]):
|
716
|
+
# (aliased as {::version_1_2}[rdoc-ref:Gem::Net::HTTP.version_1_2]):
|
715
717
|
# Returns true; retained for compatibility.
|
716
718
|
#
|
717
719
|
# === Debugging
|
@@ -722,7 +724,7 @@ module Gem::Net #:nodoc:
|
|
722
724
|
class HTTP < Protocol
|
723
725
|
|
724
726
|
# :stopdoc:
|
725
|
-
VERSION = "0.
|
727
|
+
VERSION = "0.6.0"
|
726
728
|
HTTPVersion = '1.1'
|
727
729
|
begin
|
728
730
|
require 'zlib'
|
@@ -790,7 +792,7 @@ module Gem::Net #:nodoc:
|
|
790
792
|
#
|
791
793
|
# With URI object +uri+ and optional hash argument +headers+:
|
792
794
|
#
|
793
|
-
# uri = URI('https://jsonplaceholder.typicode.com/todos/1')
|
795
|
+
# uri = Gem::URI('https://jsonplaceholder.typicode.com/todos/1')
|
794
796
|
# headers = {'Content-type' => 'application/json; charset=UTF-8'}
|
795
797
|
# Gem::Net::HTTP.get(uri, headers)
|
796
798
|
#
|
@@ -889,6 +891,39 @@ module Gem::Net #:nodoc:
|
|
889
891
|
}
|
890
892
|
end
|
891
893
|
|
894
|
+
# Sends a PUT request to the server; returns a Gem::Net::HTTPResponse object.
|
895
|
+
#
|
896
|
+
# Argument +url+ must be a URL;
|
897
|
+
# argument +data+ must be a string:
|
898
|
+
#
|
899
|
+
# _uri = uri.dup
|
900
|
+
# _uri.path = '/posts'
|
901
|
+
# data = '{"title": "foo", "body": "bar", "userId": 1}'
|
902
|
+
# headers = {'content-type': 'application/json'}
|
903
|
+
# res = Gem::Net::HTTP.put(_uri, data, headers) # => #<Gem::Net::HTTPCreated 201 Created readbody=true>
|
904
|
+
# puts res.body
|
905
|
+
#
|
906
|
+
# Output:
|
907
|
+
#
|
908
|
+
# {
|
909
|
+
# "title": "foo",
|
910
|
+
# "body": "bar",
|
911
|
+
# "userId": 1,
|
912
|
+
# "id": 101
|
913
|
+
# }
|
914
|
+
#
|
915
|
+
# Related:
|
916
|
+
#
|
917
|
+
# - Gem::Net::HTTP::Put: request class for \HTTP method +PUT+.
|
918
|
+
# - Gem::Net::HTTP#put: convenience method for \HTTP method +PUT+.
|
919
|
+
#
|
920
|
+
def HTTP.put(url, data, header = nil)
|
921
|
+
start(url.hostname, url.port,
|
922
|
+
:use_ssl => url.scheme == 'https' ) {|http|
|
923
|
+
http.put(url, data, header)
|
924
|
+
}
|
925
|
+
end
|
926
|
+
|
892
927
|
#
|
893
928
|
# \HTTP session management
|
894
929
|
#
|
@@ -1062,7 +1097,7 @@ module Gem::Net #:nodoc:
|
|
1062
1097
|
# For proxy-defining arguments +p_addr+ through +p_no_proxy+,
|
1063
1098
|
# see {Proxy Server}[rdoc-ref:Gem::Net::HTTP@Proxy+Server].
|
1064
1099
|
#
|
1065
|
-
def HTTP.new(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, p_no_proxy = nil)
|
1100
|
+
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
1101
|
http = super address, port
|
1067
1102
|
|
1068
1103
|
if proxy_class? then # from Gem::Net::HTTP::Proxy()
|
@@ -1071,10 +1106,11 @@ module Gem::Net #:nodoc:
|
|
1071
1106
|
http.proxy_port = @proxy_port
|
1072
1107
|
http.proxy_user = @proxy_user
|
1073
1108
|
http.proxy_pass = @proxy_pass
|
1109
|
+
http.proxy_use_ssl = @proxy_use_ssl
|
1074
1110
|
elsif p_addr == :ENV then
|
1075
1111
|
http.proxy_from_env = true
|
1076
1112
|
else
|
1077
|
-
if p_addr && p_no_proxy && !URI::Generic.use_proxy?(address, address, port, p_no_proxy)
|
1113
|
+
if p_addr && p_no_proxy && !Gem::URI::Generic.use_proxy?(address, address, port, p_no_proxy)
|
1078
1114
|
p_addr = nil
|
1079
1115
|
p_port = nil
|
1080
1116
|
end
|
@@ -1082,34 +1118,67 @@ module Gem::Net #:nodoc:
|
|
1082
1118
|
http.proxy_port = p_port || default_port
|
1083
1119
|
http.proxy_user = p_user
|
1084
1120
|
http.proxy_pass = p_pass
|
1121
|
+
http.proxy_use_ssl = p_use_ssl
|
1085
1122
|
end
|
1086
1123
|
|
1087
1124
|
http
|
1088
1125
|
end
|
1089
1126
|
|
1127
|
+
class << HTTP
|
1128
|
+
# Allows to set the default configuration that will be used
|
1129
|
+
# when creating a new connection.
|
1130
|
+
#
|
1131
|
+
# Example:
|
1132
|
+
#
|
1133
|
+
# Gem::Net::HTTP.default_configuration = {
|
1134
|
+
# read_timeout: 1,
|
1135
|
+
# write_timeout: 1
|
1136
|
+
# }
|
1137
|
+
# http = Gem::Net::HTTP.new(hostname)
|
1138
|
+
# http.open_timeout # => 60
|
1139
|
+
# http.read_timeout # => 1
|
1140
|
+
# http.write_timeout # => 1
|
1141
|
+
#
|
1142
|
+
attr_accessor :default_configuration
|
1143
|
+
end
|
1144
|
+
|
1090
1145
|
# Creates a new \Gem::Net::HTTP object for the specified server address,
|
1091
1146
|
# without opening the TCP connection or initializing the \HTTP session.
|
1092
1147
|
# The +address+ should be a DNS hostname or IP address.
|
1093
1148
|
def initialize(address, port = nil) # :nodoc:
|
1149
|
+
defaults = {
|
1150
|
+
keep_alive_timeout: 2,
|
1151
|
+
close_on_empty_response: false,
|
1152
|
+
open_timeout: 60,
|
1153
|
+
read_timeout: 60,
|
1154
|
+
write_timeout: 60,
|
1155
|
+
continue_timeout: nil,
|
1156
|
+
max_retries: 1,
|
1157
|
+
debug_output: nil,
|
1158
|
+
response_body_encoding: false,
|
1159
|
+
ignore_eof: true
|
1160
|
+
}
|
1161
|
+
options = defaults.merge(self.class.default_configuration || {})
|
1162
|
+
|
1094
1163
|
@address = address
|
1095
1164
|
@port = (port || HTTP.default_port)
|
1096
1165
|
@ipaddr = nil
|
1097
1166
|
@local_host = nil
|
1098
1167
|
@local_port = nil
|
1099
1168
|
@curr_http_version = HTTPVersion
|
1100
|
-
@keep_alive_timeout =
|
1169
|
+
@keep_alive_timeout = options[:keep_alive_timeout]
|
1101
1170
|
@last_communicated = nil
|
1102
|
-
@close_on_empty_response =
|
1171
|
+
@close_on_empty_response = options[:close_on_empty_response]
|
1103
1172
|
@socket = nil
|
1104
1173
|
@started = false
|
1105
|
-
@open_timeout =
|
1106
|
-
@read_timeout =
|
1107
|
-
@write_timeout =
|
1108
|
-
@continue_timeout =
|
1109
|
-
@max_retries =
|
1110
|
-
@debug_output =
|
1111
|
-
@response_body_encoding =
|
1112
|
-
@ignore_eof =
|
1174
|
+
@open_timeout = options[:open_timeout]
|
1175
|
+
@read_timeout = options[:read_timeout]
|
1176
|
+
@write_timeout = options[:write_timeout]
|
1177
|
+
@continue_timeout = options[:continue_timeout]
|
1178
|
+
@max_retries = options[:max_retries]
|
1179
|
+
@debug_output = options[:debug_output]
|
1180
|
+
@response_body_encoding = options[:response_body_encoding]
|
1181
|
+
@ignore_eof = options[:ignore_eof]
|
1113
1182
|
|
1114
1183
|
@proxy_from_env = false
|
1115
1184
|
@proxy_uri = nil
|
@@ -1117,6 +1186,7 @@ module Gem::Net #:nodoc:
|
|
1117
1186
|
@proxy_port = nil
|
1118
1187
|
@proxy_user = nil
|
1119
1188
|
@proxy_pass = nil
|
1189
|
+
@proxy_use_ssl = nil
|
1120
1190
|
|
1121
1191
|
@use_ssl = false
|
1122
1192
|
@ssl_context = nil
|
@@ -1251,6 +1321,7 @@ module Gem::Net #:nodoc:
|
|
1251
1321
|
# Sets the proxy password;
|
1252
1322
|
# see {Proxy Server}[rdoc-ref:Gem::Net::HTTP@Proxy+Server].
|
1253
1323
|
attr_writer :proxy_pass
|
1324
|
+
attr_writer :proxy_use_ssl
|
1254
1325
|
|
1255
1326
|
# Returns the IP address for the connection.
|
1256
1327
|
#
|
@@ -1440,23 +1511,6 @@ module Gem::Net #:nodoc:
|
|
1440
1511
|
@use_ssl = flag
|
1441
1512
|
end
|
1442
1513
|
|
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
1514
|
SSL_ATTRIBUTES = [
|
1461
1515
|
:ca_file,
|
1462
1516
|
:ca_path,
|
@@ -1475,6 +1529,8 @@ module Gem::Net #:nodoc:
|
|
1475
1529
|
:verify_hostname,
|
1476
1530
|
] # :nodoc:
|
1477
1531
|
|
1532
|
+
SSL_IVNAMES = SSL_ATTRIBUTES.map { |a| "@#{a}".to_sym } # :nodoc:
|
1533
|
+
|
1478
1534
|
# Sets or returns the path to a CA certification file in PEM format.
|
1479
1535
|
attr_accessor :ca_file
|
1480
1536
|
|
@@ -1490,11 +1546,11 @@ module Gem::Net #:nodoc:
|
|
1490
1546
|
attr_accessor :cert_store
|
1491
1547
|
|
1492
1548
|
# Sets or returns the available SSL ciphers.
|
1493
|
-
# See {OpenSSL::SSL::SSLContext#ciphers=}[
|
1549
|
+
# See {OpenSSL::SSL::SSLContext#ciphers=}[OpenSSL::SSL::SSL::Context#ciphers=].
|
1494
1550
|
attr_accessor :ciphers
|
1495
1551
|
|
1496
1552
|
# Sets or returns the extra X509 certificates to be added to the certificate chain.
|
1497
|
-
# See {OpenSSL::SSL::SSLContext#add_certificate}[
|
1553
|
+
# See {OpenSSL::SSL::SSLContext#add_certificate}[OpenSSL::SSL::SSL::Context#add_certificate].
|
1498
1554
|
attr_accessor :extra_chain_cert
|
1499
1555
|
|
1500
1556
|
# Sets or returns the OpenSSL::PKey::RSA or OpenSSL::PKey::DSA object.
|
@@ -1504,15 +1560,15 @@ module Gem::Net #:nodoc:
|
|
1504
1560
|
attr_accessor :ssl_timeout
|
1505
1561
|
|
1506
1562
|
# Sets or returns the SSL version.
|
1507
|
-
# See {OpenSSL::SSL::SSLContext#ssl_version=}[
|
1563
|
+
# See {OpenSSL::SSL::SSLContext#ssl_version=}[OpenSSL::SSL::SSL::Context#ssl_version=].
|
1508
1564
|
attr_accessor :ssl_version
|
1509
1565
|
|
1510
1566
|
# Sets or returns the minimum SSL version.
|
1511
|
-
# See {OpenSSL::SSL::SSLContext#min_version=}[
|
1567
|
+
# See {OpenSSL::SSL::SSLContext#min_version=}[OpenSSL::SSL::SSL::Context#min_version=].
|
1512
1568
|
attr_accessor :min_version
|
1513
1569
|
|
1514
1570
|
# Sets or returns the maximum SSL version.
|
1515
|
-
# See {OpenSSL::SSL::SSLContext#max_version=}[
|
1571
|
+
# See {OpenSSL::SSL::SSLContext#max_version=}[OpenSSL::SSL::SSL::Context#max_version=].
|
1516
1572
|
attr_accessor :max_version
|
1517
1573
|
|
1518
1574
|
# Sets or returns the callback for the server certification verification.
|
@@ -1528,7 +1584,7 @@ module Gem::Net #:nodoc:
|
|
1528
1584
|
|
1529
1585
|
# Sets or returns whether to verify that the server certificate is valid
|
1530
1586
|
# for the hostname.
|
1531
|
-
# See {OpenSSL::SSL::SSLContext#verify_hostname=}[
|
1587
|
+
# See {OpenSSL::SSL::SSLContext#verify_hostname=}[OpenSSL::SSL::SSL::Context#verify_hostname=].
|
1532
1588
|
attr_accessor :verify_hostname
|
1533
1589
|
|
1534
1590
|
# Returns the X509 certificate chain (an array of strings)
|
@@ -1610,7 +1666,13 @@ module Gem::Net #:nodoc:
|
|
1610
1666
|
debug "opened"
|
1611
1667
|
if use_ssl?
|
1612
1668
|
if proxy?
|
1613
|
-
|
1669
|
+
if @proxy_use_ssl
|
1670
|
+
proxy_sock = OpenSSL::SSL::SSLSocket.new(s)
|
1671
|
+
ssl_socket_connect(proxy_sock, @open_timeout)
|
1672
|
+
else
|
1673
|
+
proxy_sock = s
|
1674
|
+
end
|
1675
|
+
proxy_sock = BufferedIO.new(proxy_sock, read_timeout: @read_timeout,
|
1614
1676
|
write_timeout: @write_timeout,
|
1615
1677
|
continue_timeout: @continue_timeout,
|
1616
1678
|
debug_output: @debug_output)
|
@@ -1621,8 +1683,8 @@ module Gem::Net #:nodoc:
|
|
1621
1683
|
buf << "Proxy-Authorization: Basic #{credential}\r\n"
|
1622
1684
|
end
|
1623
1685
|
buf << "\r\n"
|
1624
|
-
|
1625
|
-
HTTPResponse.read_new(
|
1686
|
+
proxy_sock.write(buf)
|
1687
|
+
HTTPResponse.read_new(proxy_sock).value
|
1626
1688
|
# assuming nothing left in buffers after successful CONNECT response
|
1627
1689
|
end
|
1628
1690
|
|
@@ -1730,13 +1792,14 @@ module Gem::Net #:nodoc:
|
|
1730
1792
|
@proxy_port = nil
|
1731
1793
|
@proxy_user = nil
|
1732
1794
|
@proxy_pass = nil
|
1795
|
+
@proxy_use_ssl = nil
|
1733
1796
|
|
1734
1797
|
# Creates an \HTTP proxy class which behaves like \Gem::Net::HTTP, but
|
1735
1798
|
# performs all access via the specified proxy.
|
1736
1799
|
#
|
1737
1800
|
# This class is obsolete. You may pass these same parameters directly to
|
1738
1801
|
# \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:
|
1802
|
+
def HTTP.Proxy(p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, p_use_ssl = nil) #:nodoc:
|
1740
1803
|
return self unless p_addr
|
1741
1804
|
|
1742
1805
|
Class.new(self) {
|
@@ -1754,6 +1817,7 @@ module Gem::Net #:nodoc:
|
|
1754
1817
|
|
1755
1818
|
@proxy_user = p_user
|
1756
1819
|
@proxy_pass = p_pass
|
1820
|
+
@proxy_use_ssl = p_use_ssl
|
1757
1821
|
}
|
1758
1822
|
end
|
1759
1823
|
|
@@ -1778,6 +1842,9 @@ module Gem::Net #:nodoc:
|
|
1778
1842
|
# Returns the password for accessing the proxy, or +nil+ if none;
|
1779
1843
|
# see Gem::Net::HTTP@Proxy+Server.
|
1780
1844
|
attr_reader :proxy_pass
|
1845
|
+
|
1846
|
+
# Use SSL when talking to the proxy. If Gem::Net::HTTP does not use a proxy, nil.
|
1847
|
+
attr_reader :proxy_use_ssl
|
1781
1848
|
end
|
1782
1849
|
|
1783
1850
|
# Returns +true+ if a proxy server is defined, +false+ otherwise;
|
@@ -1796,7 +1863,7 @@ module Gem::Net #:nodoc:
|
|
1796
1863
|
# The proxy URI determined from the environment for this connection.
|
1797
1864
|
def proxy_uri # :nodoc:
|
1798
1865
|
return if @proxy_uri == false
|
1799
|
-
@proxy_uri ||= URI::HTTP.new(
|
1866
|
+
@proxy_uri ||= Gem::URI::HTTP.new(
|
1800
1867
|
"http", nil, address, port, nil, nil, nil, nil, nil
|
1801
1868
|
).find_proxy || false
|
1802
1869
|
@proxy_uri || nil
|
@@ -1850,7 +1917,8 @@ module Gem::Net #:nodoc:
|
|
1850
1917
|
private
|
1851
1918
|
|
1852
1919
|
def unescape(value)
|
1853
|
-
require 'cgi/
|
1920
|
+
require 'cgi/escape'
|
1921
|
+
require 'cgi/util' unless defined?(CGI::EscapeExt)
|
1854
1922
|
CGI.unescape(value)
|
1855
1923
|
end
|
1856
1924
|
|
@@ -2012,6 +2080,11 @@ module Gem::Net #:nodoc:
|
|
2012
2080
|
# http = Gem::Net::HTTP.new(hostname)
|
2013
2081
|
# http.put('/todos/1', data) # => #<Gem::Net::HTTPOK 200 OK readbody=true>
|
2014
2082
|
#
|
2083
|
+
# Related:
|
2084
|
+
#
|
2085
|
+
# - Gem::Net::HTTP::Put: request class for \HTTP method PUT.
|
2086
|
+
# - Gem::Net::HTTP.put: sends PUT request, returns response body.
|
2087
|
+
#
|
2015
2088
|
def put(path, data, initheader = nil)
|
2016
2089
|
request(Put.new(path, initheader), data)
|
2017
2090
|
end
|
@@ -2350,7 +2423,10 @@ module Gem::Net #:nodoc:
|
|
2350
2423
|
res
|
2351
2424
|
}
|
2352
2425
|
res.reading_body(@socket, req.response_body_permitted?) {
|
2353
|
-
|
2426
|
+
if block_given?
|
2427
|
+
count = max_retries # Don't restart in the middle of a download
|
2428
|
+
yield res
|
2429
|
+
end
|
2354
2430
|
}
|
2355
2431
|
rescue Gem::Net::OpenTimeout
|
2356
2432
|
raise
|
@@ -2478,6 +2554,11 @@ module Gem::Net #:nodoc:
|
|
2478
2554
|
alias_method :D, :debug
|
2479
2555
|
end
|
2480
2556
|
|
2557
|
+
# for backward compatibility until Ruby 3.5
|
2558
|
+
# https://bugs.ruby-lang.org/issues/20900
|
2559
|
+
# https://github.com/bblimke/webmock/pull/1081
|
2560
|
+
HTTPSession = HTTP
|
2561
|
+
deprecate_constant :HTTPSession
|
2481
2562
|
end
|
2482
2563
|
|
2483
2564
|
require_relative 'http/exceptions'
|
@@ -2492,5 +2573,3 @@ require_relative 'http/response'
|
|
2492
2573
|
require_relative 'http/responses'
|
2493
2574
|
|
2494
2575
|
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
|
-
|
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
|
-
|
11
|
-
|
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}", *
|
20
|
+
define("--#{name}=#{op}#{name.upcase}#{cl}", *params[name]) do |o|
|
16
21
|
options[name] = o
|
17
22
|
end
|
18
23
|
end
|