class BundleUpdateInteractive::ChangelogLocator
def fetch_rubygems_data(name, version)
def fetch_rubygems_data(name, version) api_url = if version.nil? "https://rubygems.org/api/v1/gems/#{name}.json" else "https://rubygems.org/api/v2/rubygems/#{name}/versions/#{version}.json" end response = HTTP.get(api_url) # Try again without the version in case the version does not exist at rubygems for some reason. # This can happen when using a pre-release Ruby that has a bundled gem newer than the published version. return fetch_rubygems_data(name, nil) if !response.success? && !version.nil? response.success? ? JSON.parse(response.body) : nil end
def find_changelog_uri(name:, version: nil)
def find_changelog_uri(name:, version: nil) data = fetch_rubygems_data(name, version) return if data.nil? if (rubygems_changelog_uri = data["changelog_uri"]) rubygems_changelog_uri elsif (github_repo = GitHubRepo.from_uris(data.values_at(*URI_KEYS))) github_repo.discover_changelog_uri(data["version"]) end end