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.



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

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.



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

def credentials
  @credentials
end

#dependencyObject (readonly)

Returns the value of attribute dependency.



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

def dependency
  @dependency
end

#dependency_filesObject (readonly)

Returns the value of attribute dependency_files.



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

def dependency_files
  @dependency_files
end

#optionsObject (readonly)

Returns the value of attribute options.



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

def options
  @options
end

Instance Method Details

#package_details_metadataObject



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
102
# File 'lib/dependabot/pub/package/package_details_fetcher.rb', line 75

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



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

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