Class: Dependabot::Nuget::RepositoryFinder
- Inherits:
-
Object
- Object
- Dependabot::Nuget::RepositoryFinder
- Extended by:
- T::Sig
- Defined in:
- lib/dependabot/nuget/update_checker/repository_finder.rb
Overview
rubocop:disable Metrics/ClassLength
Constant Summary collapse
- DEFAULT_REPOSITORY_URL =
"https://api.nuget.org/v3/index.json"
- DEFAULT_REPOSITORY_API_KEY =
"nuget.org"
Class Method Summary collapse
- .escape_source_name_to_element_name(source_name) ⇒ Object
- .get_default_repository_details(dependency_name) ⇒ Object
Instance Method Summary collapse
- #dependency_urls ⇒ Object
-
#initialize(dependency:, credentials:, config_files: []) ⇒ RepositoryFinder
constructor
A new instance of RepositoryFinder.
- #known_repositories ⇒ Object
Constructor Details
#initialize(dependency:, credentials:, config_files: []) ⇒ RepositoryFinder
Returns a new instance of RepositoryFinder.
30 31 32 33 34 |
# File 'lib/dependabot/nuget/update_checker/repository_finder.rb', line 30 def initialize(dependency:, credentials:, config_files: []) @dependency = dependency @credentials = credentials @config_files = config_files end |
Class Method Details
.escape_source_name_to_element_name(source_name) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/dependabot/nuget/update_checker/repository_finder.rb', line 81 def self.escape_source_name_to_element_name(source_name) source_name.chars.map do |c| case c when /[A-Za-z0-9\-_.]/ # letters, digits, hyphens, underscores, and periods are all directly allowed c else # otherwise it needs to be escaped as a 4 digit hex value "_x#{c.ord.to_s(16).rjust(4, '0')}_" end end.join end |
.get_default_repository_details(dependency_name) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/dependabot/nuget/update_checker/repository_finder.rb', line 66 def self.get_default_repository_details(dependency_name) { base_url: "https://api.nuget.org/v3-flatcontainer/", registration_url: "https://api.nuget.org/v3/registration5-gz-semver2/#{dependency_name.downcase}/index.json", repository_url: DEFAULT_REPOSITORY_URL, versions_url: "https://api.nuget.org/v3-flatcontainer/" \ "#{dependency_name.downcase}/index.json", search_url: "https://azuresearch-usnc.nuget.org/query" \ "?q=#{dependency_name.downcase}&prerelease=true&semVerLevel=2.0.0", auth_header: {}, repository_type: "v3" } end |
Instance Method Details
#dependency_urls ⇒ Object
37 38 39 |
# File 'lib/dependabot/nuget/update_checker/repository_finder.rb', line 37 def dependency_urls find_dependency_urls end |
#known_repositories ⇒ Object
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/nuget/update_checker/repository_finder.rb', line 42 def known_repositories return @known_repositories if @known_repositories @known_repositories ||= T.let([], T.nilable(T::Array[T::Hash[Symbol, String]])) @known_repositories += credential_repositories @known_repositories += config_file_repositories @known_repositories << { url: DEFAULT_REPOSITORY_URL, token: nil } if @known_repositories.empty? @known_repositories = @known_repositories.map do |repo| url = repo[:url] begin url = URI::DEFAULT_PARSER.parse(url).to_s rescue URI::InvalidURIError # e.g., the url has spaces or unacceptable symbols url = URI::DEFAULT_PARSER.escape(url) end { url: url, token: repo[:token] } end @known_repositories.uniq end |