Class: Dependabot::Cargo::Package::PackageDetailsFetcher

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

Constant Summary collapse

CRATES_IO_API =
"https://crates.io/api/v1/crates"
PACKAGE_TYPE =
"gem"
PACKAGE_LANGUAGE =
"rust"
RUST_REQUIREMENT =

fallback for empty requirement

"1.0"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dependency:, dependency_files:, credentials:) ⇒ PackageDetailsFetcher

Returns a new instance of PackageDetailsFetcher.



34
35
36
37
38
39
40
# File 'lib/dependabot/cargo/package/package_details_fetcher.rb', line 34

def initialize(dependency:, dependency_files:, credentials:)
  @dependency = dependency
  @dependency_files = dependency_files
  @credentials = credentials

  @source_type = T.let(nil, T.nilable(String))
end

Instance Attribute Details

#credentialsObject (readonly)

Returns the value of attribute credentials.



49
50
51
# File 'lib/dependabot/cargo/package/package_details_fetcher.rb', line 49

def credentials
  @credentials
end

#dependencyObject (readonly)

Returns the value of attribute dependency.



43
44
45
# File 'lib/dependabot/cargo/package/package_details_fetcher.rb', line 43

def dependency
  @dependency
end

#dependency_filesObject (readonly)

Returns the value of attribute dependency_files.



46
47
48
# File 'lib/dependabot/cargo/package/package_details_fetcher.rb', line 46

def dependency_files
  @dependency_files
end

Instance Method Details

#fetchObject



54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/dependabot/cargo/package/package_details_fetcher.rb', line 54

def fetch
  package_releases = crates_listing.fetch("versions", []).reject { |v| v["yanked"] }.map do |release|
    package_release(
      version: release["num"] || release["vers"],
      released_at: release["created_at"] ? Time.parse(release["created_at"]) : nil,
      downloads: release["downloads"],
      url: "#{CRATES_IO_API}/#{release['dl_path']}",
      rust_version: release["rust"]
    )
  end

  package_details(package_releases)
end