summaryrefslogtreecommitdiff
path: root/vendor/gems/bundler-checksum/lib/bundler/checksum/command/helper.rb
blob: fa06bfe3da470725ec88d70d4925000081a40b8b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# frozen_string_literal: true

require 'json'
require 'net/http'

module Bundler::Checksum::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