Class: Dependabot::Elm::Package::PackageDetailsFetcher

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dependency:) ⇒ PackageDetailsFetcher

Returns a new instance of PackageDetailsFetcher.



27
28
29
30
31
32
33
34
# File 'lib/dependabot/elm/package/package_details_fetcher.rb', line 27

def initialize(dependency:)
  @dependency = dependency

  @provider_url = T.let(
    "https://package.elm-lang.org/packages/#{dependency.name}/releases.json",
    T.nilable(String)
  )
end

Instance Attribute Details

#dependencyObject (readonly)

Returns the value of attribute dependency.



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

def dependency
  @dependency
end

Instance Method Details

#fetch_package_releasesObject



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/dependabot/elm/package/package_details_fetcher.rb', line 40

def fetch_package_releases
  releases = T.let([], T::Array[Dependabot::Package::PackageRelease])
  begin
    response = Dependabot::RegistryClient.get(
      url: T.must(@provider_url)
    )

    return [] unless response.status == 200

     = JSON.parse(response.body)

    .each do |version, release_date|
      releases << Dependabot::Package::PackageRelease.new(
        version: Elm::Version.new(version),
        released_at: release_date ? Time.at(release_date).to_time : nil
      )
    end

    releases
  rescue StandardError => e
    Dependabot.logger.error("Error while fetching package info for elm packages: #{e.message}")
    releases
  end
end