Class: Dependabot::Python::Package::SimpleApiParser
- Inherits:
-
Object
- Object
- Dependabot::Python::Package::SimpleApiParser
- Extended by:
- T::Sig
- Defined in:
- lib/dependabot/python/package/simple_api_parser.rb
Constant Summary collapse
- ReleaseDetail =
T.type_alias { T::Hash[String, T.nilable(T.any(String, T::Boolean))] }
Instance Method Summary collapse
-
#initialize(dependency:, project_url:) ⇒ SimpleApiParser
constructor
A new instance of SimpleApiParser.
- #parse(json_body) ⇒ Object
Constructor Details
#initialize(dependency:, project_url:) ⇒ SimpleApiParser
Returns a new instance of SimpleApiParser.
19 20 21 22 |
# File 'lib/dependabot/python/package/simple_api_parser.rb', line 19 def initialize(dependency:, project_url:) @dependency = dependency @project_url = project_url end |
Instance Method Details
#parse(json_body) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/dependabot/python/package/simple_api_parser.rb', line 28 def parse(json_body) data = JSON.parse(json_body) validate_api_version!(data.dig("meta", "api-version").to_s) data.fetch("files", []).each_with_object({}) do |file, releases| filename = file["filename"] next unless filename&.match?(name_regex) version = version_from_filename(filename) next unless dependency.version_class.correct?(version) yanked = file["yanked"] || false details = { "version" => version, "requires_python" => file["requires-python"], "yanked" => yanked != false, "yanked_reason" => yanked.is_a?(String) ? yanked : nil, "upload_time" => file["upload-time"], "url" => resolve_url(file["url"]) } releases[version] ||= [] releases[version] << details end end |