Class: DependencyTimelineAudit::GemInfo
- Inherits:
-
Object
- Object
- DependencyTimelineAudit::GemInfo
- Defined in:
- lib/dependency-timeline-audit/gem_info.rb
Overview
Define a class for interacting with the RubyGems API
Constant Summary collapse
- API_URL =
'https://rubygems.org/api/v1/versions/'
- @@gem_cache =
{}
Class Method Summary collapse
-
.fetch_gem_data(gem_name) ⇒ Object
Method to fetch the gem data and cache it.
-
.latest_version(gem_name) ⇒ Object
Method to fetch the latest version and its created_at timestamp.
-
.version_created_at(gem_name, version) ⇒ Object
Method to fetch the created_at timestamp for a specific version.
Class Method Details
.fetch_gem_data(gem_name) ⇒ Object
Method to fetch the gem data and cache it
11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/dependency-timeline-audit/gem_info.rb', line 11 def self.fetch_gem_data(gem_name) # Check if gem info is already cached unless @@gem_cache[gem_name] url = URI("#{API_URL}#{gem_name}.json") response = Net::HTTP.get(url) @@gem_cache[gem_name] = JSON.parse(response) end # Return cached gem info @@gem_cache[gem_name] end |
.latest_version(gem_name) ⇒ Object
Method to fetch the latest version and its created_at timestamp
24 25 26 27 28 29 30 |
# File 'lib/dependency-timeline-audit/gem_info.rb', line 24 def self.latest_version(gem_name) versions = fetch_gem_data(gem_name) latest = versions.first # The first entry is the latest version version_number = latest['number'] created_at = latest['created_at'] { version: version_number, created_at: created_at } end |
.version_created_at(gem_name, version) ⇒ Object
Method to fetch the created_at timestamp for a specific version
33 34 35 36 37 38 39 |
# File 'lib/dependency-timeline-audit/gem_info.rb', line 33 def self.version_created_at(gem_name, version) versions = fetch_gem_data(gem_name) # Find the version that matches the requested version string version_info = versions.find { |v| v['number'] == version } version_info.present? ? version_info['created_at'] : nil end |