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.



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

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.



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

def credentials
  @credentials
end

#dependencyObject (readonly)

Returns the value of attribute dependency.



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

def dependency
  @dependency
end

#dependency_filesObject (readonly)

Returns the value of attribute dependency_files.



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

def dependency_files
  @dependency_files
end

Instance Method Details

#fetchObject



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

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