diff options
Diffstat (limited to 'vendor/gems/bundler-checksum/lib/bundler_checksum/command/helper.rb')
-rw-r--r-- | vendor/gems/bundler-checksum/lib/bundler_checksum/command/helper.rb | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/vendor/gems/bundler-checksum/lib/bundler_checksum/command/helper.rb b/vendor/gems/bundler-checksum/lib/bundler_checksum/command/helper.rb new file mode 100644 index 00000000000..515f5926106 --- /dev/null +++ b/vendor/gems/bundler-checksum/lib/bundler_checksum/command/helper.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +require 'json' +require 'net/http' + +module BundlerChecksum::Command + module Helper + extend self + + def remote_checksums_for_gem(gem_name, gem_version) + response = Net::HTTP.get_response(URI( + "https://rubygems.org/api/v1/versions/#{gem_name}.json" + )) + + return [] unless response.code == '200' + + gem_candidates = JSON.parse(response.body, symbolize_names: true) + gem_candidates.select! { |g| g[:number] == gem_version.to_s } + + gem_candidates.map { + |g| {:name => gem_name, :version => gem_version, :platform => g[:platform], :checksum => g[:sha]} + } + + rescue JSON::ParserError + [] + end + end +end |