Class: Dependabot::Devbox::Package::PackageDetailsFetcher

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/devbox/package/package_details_fetcher.rb

Constant Summary collapse

SEARCH_URL =
T.let("https://search.devbox.sh/v1/search", String)

Instance Method Summary collapse

Constructor Details

#initialize(dependency:) ⇒ PackageDetailsFetcher

Returns a new instance of PackageDetailsFetcher.



21
22
23
# File 'lib/dependabot/devbox/package/package_details_fetcher.rb', line 21

def initialize(dependency:)
  @dependency = dependency
end

Instance Method Details

#available_versionsObject



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/dependabot/devbox/package/package_details_fetcher.rb', line 26

def available_versions
  package = fetch_package
  return [] unless package

  versions = package["versions"]
  return [] unless versions.is_a?(Array)

  versions.filter_map do |version_data|
    next unless version_data.is_a?(Hash)

    version_str = version_data["version"]
    next unless version_str.is_a?(String) && Devbox::Version.correct?(version_str)

    Dependabot::Package::PackageRelease.new(
      version: Devbox::Version.new(version_str),
      released_at: release_time(version_data)
    )
  end
rescue JSON::ParserError, Excon::Error::Timeout, Excon::Error::Socket
  []
end