Files
chromebrew/lib/gem_compact_index_client.rb
Satadru Pramanik, DO, MPH, MEng f4b7d38e1a Use more gem caching to speed up gem installs. (#10602)
* Use more gem caching.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* bump version

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

---------

Signed-off-by: Satadru Pramanik <satadru@gmail.com>
2024-10-13 01:08:39 -05:00

37 lines
916 B
Ruby

require 'uri'
require 'net/http'
# Adapted from https://github.com/rubygems/rubygems/issues/8012#issuecomment-2375499571
# by @duckinator (Ellen Marie Dash)
# A very bare-bones client for the Compact Index API
# https://guides.rubygems.org/rubygems-org-compact-index-api/
class BasicCompactIndexClient
def initialize(gem_server = 'https://rubygems.org/')
@gem_server = gem_server
end
# Returns a list of all gems on the specified gem server.
def gems
lines(request('/versions'))
end
private
def request(endpoint)
uri = URI.join(@gem_server, endpoint)
response = Net::HTTP.get_response(uri)
raise "got HTTP code #{response.code}, expected 200" unless response.is_a?(Net::HTTPOK)
response.body
end
def lines(data)
return [] if data.nil? || data.empty?
lines = data.split("\n")
header = lines.index('---')
header ? lines[header + 1..] : lines
end
end