Class: Dependabot::Maven::Package::PackageDetailsFetcher
- Inherits:
-
Shared::SharedPackageDetailsFetcher
- Object
- Shared::SharedPackageDetailsFetcher
- Dependabot::Maven::Package::PackageDetailsFetcher
- Extended by:
- T::Sig
- Defined in:
- lib/dependabot/maven/package/package_details_fetcher.rb
Constant Summary
Constants inherited from Shared::SharedPackageDetailsFetcher
Shared::SharedPackageDetailsFetcher::AUTH_HEADERS_KEY, Shared::SharedPackageDetailsFetcher::DEFAULT_CENTRAL_REPO_URL, Shared::SharedPackageDetailsFetcher::HtmlVersionDetails, Shared::SharedPackageDetailsFetcher::MAVEN_METADATA_XML, Shared::SharedPackageDetailsFetcher::REPOSITORY_TYPE, Shared::SharedPackageDetailsFetcher::RepositoryDetails, Shared::SharedPackageDetailsFetcher::URL_KEY, Shared::SharedPackageDetailsFetcher::VersionDetails
Instance Attribute Summary collapse
-
#credentials ⇒ Object
readonly
Returns the value of attribute credentials.
-
#dependency ⇒ Object
readonly
Returns the value of attribute dependency.
-
#dependency_files ⇒ Object
readonly
Returns the value of attribute dependency_files.
Instance Method Summary collapse
- #central_repo_url ⇒ Object
- #fetch ⇒ Object
- #fetch_release_metadata(release:) ⇒ Object
-
#initialize(dependency:, dependency_files:, credentials:) ⇒ PackageDetailsFetcher
constructor
A new instance of PackageDetailsFetcher.
- #releases ⇒ Object
- #repositories ⇒ Object
Methods inherited from Shared::SharedPackageDetailsFetcher
#auth_headers, #auth_headers_finder, #central_repo_urls, #check_response, #credentials_repository_details, #dependency_base_url, #dependency_files_url, #dependency_metadata, #dependency_metadata_from_html, #dependency_metadata_url, #dependency_parts, #dependency_pom_url, #extract_metadata_from_xml, #extract_release_date_from_link, #extract_version_details_from_html, #extract_version_from_link, #fetch_dependency_metadata, #fetch_dependency_metadata_from_html, #forbidden_urls, #handle_registry_error, #released?, #repository_auth_headers, #repository_url, #version_class, #versions, #versions_details_from_xml, #versions_details_hash_from_html
Constructor Details
#initialize(dependency:, dependency_files:, credentials:) ⇒ PackageDetailsFetcher
Returns a new instance of PackageDetailsFetcher.
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/dependabot/maven/package/package_details_fetcher.rb', line 29 def initialize(dependency:, dependency_files:, credentials:) @dependency = dependency @dependency_files = dependency_files @credentials = credentials @pom_repository_details = T.let(nil, T.nilable(T::Array[RepositoryDetails])) @repository_finder = T.let(nil, T.nilable(Maven::FileParser::RepositoriesFinder)) @repositories_cache = T.let(nil, T.nilable(T::Array[RepositoryDetails])) @package_details = T.let(nil, T.nilable(Dependabot::Package::PackageDetails)) @release_date_cache = T.let({}, T::Hash[String, T.nilable(Time)]) @fallback_logged = T.let(false, T::Boolean) end |
Instance Attribute Details
#credentials ⇒ Object (readonly)
Returns the value of attribute credentials.
49 50 51 |
# File 'lib/dependabot/maven/package/package_details_fetcher.rb', line 49 def credentials @credentials end |
#dependency ⇒ Object (readonly)
Returns the value of attribute dependency.
43 44 45 |
# File 'lib/dependabot/maven/package/package_details_fetcher.rb', line 43 def dependency @dependency end |
#dependency_files ⇒ Object (readonly)
Returns the value of attribute dependency_files.
46 47 48 |
# File 'lib/dependabot/maven/package/package_details_fetcher.rb', line 46 def dependency_files @dependency_files end |
Instance Method Details
#central_repo_url ⇒ Object
111 112 113 |
# File 'lib/dependabot/maven/package/package_details_fetcher.rb', line 111 def central_repo_url repository_finder.central_repo_url end |
#fetch ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/dependabot/maven/package/package_details_fetcher.rb', line 52 def fetch return @package_details if @package_details releases = versions.map do |version_details| Dependabot::Package::PackageRelease.new( version: version_details.fetch(:version), released_at: version_details.fetch(:release_date, nil), url: version_details.fetch(:source_url) ) end @package_details = Dependabot::Package::PackageDetails.new( dependency: dependency, releases: releases ) @package_details end |
#fetch_release_metadata(release:) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/dependabot/maven/package/package_details_fetcher.rb', line 77 def (release:) return release if release.released_at url = release.url return release unless url cache_key = "#{url}\0#{release.version}" released_at = if @release_date_cache.key?(cache_key) @release_date_cache[cache_key] else @release_date_cache[cache_key] = fetch_pom_last_modified(repository_url: url, version: release.version) end return release unless released_at build_release_with_date(release, released_at) end |
#releases ⇒ Object
72 73 74 |
# File 'lib/dependabot/maven/package/package_details_fetcher.rb', line 72 def releases fetch.releases end |
#repositories ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/dependabot/maven/package/package_details_fetcher.rb', line 97 def repositories return @repositories_cache if @repositories_cache @repositories_cache = credentials_repository_details pom_repository_details.each do |repo| @repositories_cache << repo unless @repositories_cache.any? do |r| r[URL_KEY] == repo[URL_KEY] end end @repositories_cache end |