Class: Dependabot::Pub::Package::PackageDetailsFetcher

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers

pub_helpers_path, run_infer_sdk_versions

Constructor Details

#initialize(dependency:, dependency_files:, credentials:, ignored_versions: [], security_advisories: [], options: {}) ⇒ PackageDetailsFetcher

Returns a new instance of PackageDetailsFetcher.



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/dependabot/pub/package/package_details_fetcher.rb', line 49

def initialize(
  dependency:,
  dependency_files:,
  credentials:,
  ignored_versions: [],
  security_advisories: [],
  options: {}
)
  @dependency = dependency
  @dependency_files = dependency_files
  @credentials = credentials
  @ignored_versions = ignored_versions
  @security_advisories = security_advisories
  @options = options
end

Instance Attribute Details

#credentialsObject (readonly)

Returns the value of attribute credentials.



36
37
38
# File 'lib/dependabot/pub/package/package_details_fetcher.rb', line 36

def credentials
  @credentials
end

#dependencyObject (readonly)

Returns the value of attribute dependency.



27
28
29
# File 'lib/dependabot/pub/package/package_details_fetcher.rb', line 27

def dependency
  @dependency
end

#dependency_filesObject (readonly)

Returns the value of attribute dependency_files.



30
31
32
# File 'lib/dependabot/pub/package/package_details_fetcher.rb', line 30

def dependency_files
  @dependency_files
end

#optionsObject (readonly)

Returns the value of attribute options.



33
34
35
# File 'lib/dependabot/pub/package/package_details_fetcher.rb', line 33

def options
  @options
end

Instance Method Details

#package_details_metadataObject



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/dependabot/pub/package/package_details_fetcher.rb', line 74

def 
  package_releases = []
  T.let({}, T::Hash[String, T.untyped])

  Dependabot.logger.error("Initializing package metadata for \"#{@dependency.name}\"")

  response = (dependency)
  return package_releases if response.status >= 500

  begin
     = JSON.parse(response.body)

    ["versions"].select do |v|
      package_releases << package_release(
        version: v["version"],
        publish_date: Time.parse(v["published"])
      )
    end

    package_releases
  rescue JSON::ParserError
    Dependabot.logger.error("Failed to parse package metadata")
    package_releases
  end
rescue StandardError => e
  Dependabot.logger.error("Failed to fetch package metadata #{e.message}")
  package_releases
end

#reportObject



66
67
68
69
70
71
# File 'lib/dependabot/pub/package/package_details_fetcher.rb', line 66

def report
  @report ||= T.let(
    dependency_services_report,
    T.nilable(T::Array[T::Hash[String, T.untyped]])
  )
end